> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mobula.io/llms.txt
> Use this file to discover all available pages before exploring further.

# PairMetadata

> Pair metadata: liquidity, volume, price stats, token info, and optional enhanced token data.

### TypeScript shape

```ts theme={null}
interface PairMetadata {
  exchangeId: string | null;
  fee: number | null;
  id: string;
  quoteToken: QuoteToken | null;
  networkId: number | null;
  liquidity: string;
  liquidityToken: string | null;
  nonLiquidityToken: string | null;
  pairAddress: string;
  statsType: TokenPairStatisticsType;
  price: string;
  priceNonQuoteToken: string;
  priceChange5m: number | null;
  priceChange1: number | null;
  priceChange4: number | null;
  priceChange12: number | null;
  priceChange24: number | null;
  priceChange1w: number | null;
  tickSpacing: number | null;
  token0: PairMetadataToken;
  token1: PairMetadataToken;
  volume1: string | null;
  volume4: string | null;
  volume12: string | null;
  volume24: string | null;
  volume1w: string | null;
  volume5m: string | null;
  highPrice5m: string | null;
  highPrice1: string | null;
  highPrice4: string | null;
  highPrice12: string | null;
  highPrice24: string | null;
  highPrice1w: string | null;
  lowPrice5m: string | null;
  lowPrice1: string | null;
  lowPrice12: string | null;
  lowPrice24: string | null;
  lowPrice4: string | null;
  lowPrice1w: string | null;
  enhancedToken0: EnhancedToken | null;
  enhancedToken1: EnhancedToken | null;
  walletActivity: TokenWalletActivity | null;
  createdAt: number | null;
  top10HoldersPercent: number | null;
  mobula: MobulaPoolData | null;
}
```

<ResponseField name="id" type="String!">Pair ID (`pairAddress:networkId`).</ResponseField>
<ResponseField name="pairAddress" type="String!">Pair contract address.</ResponseField>
<ResponseField name="networkId" type="Int">Network ID.</ResponseField>
<ResponseField name="exchangeId" type="String">Exchange identifier (factory address).</ResponseField>
<ResponseField name="fee" type="Int">Fee tier (basis points).</ResponseField>
<ResponseField name="tickSpacing" type="Int">Tick spacing (V3-style pools).</ResponseField>

<ResponseField name="quoteToken" type="QuoteToken">
  Which token side is the quote currency. See [QuoteToken](/api-reference/graphql/types/QuoteToken).
</ResponseField>

<ResponseField name="statsType" type="TokenPairStatisticsType!">
  Whether stats are FILTERED or UNFILTERED. See [TokenPairStatisticsType](/api-reference/graphql/types/TokenPairStatisticsType).
</ResponseField>

<ResponseField name="liquidity" type="String!">Total pair liquidity in USD.</ResponseField>
<ResponseField name="liquidityToken" type="String">Address of the liquidity (deeper) side.</ResponseField>
<ResponseField name="nonLiquidityToken" type="String">Address of the non-liquidity side.</ResponseField>

<ResponseField name="price" type="String!">Price of the quote-side token in USD.</ResponseField>
<ResponseField name="priceNonQuoteToken" type="String!">Price of the non-quote-side token in USD.</ResponseField>

<ResponseField name="token0" type="PairMetadataToken!">
  Token0 details. See [PairMetadataToken](/api-reference/graphql/types/PairMetadataToken).
</ResponseField>

<ResponseField name="token1" type="PairMetadataToken!">
  Token1 details. See [PairMetadataToken](/api-reference/graphql/types/PairMetadataToken).
</ResponseField>

<ResponseField name="enhancedToken0" type="EnhancedToken">
  Full token0 metadata when requested. See [EnhancedToken](/api-reference/graphql/types/EnhancedToken).
</ResponseField>

<ResponseField name="enhancedToken1" type="EnhancedToken">
  Full token1 metadata when requested. See [EnhancedToken](/api-reference/graphql/types/EnhancedToken).
</ResponseField>

<ResponseField name="walletActivity" type="TokenWalletActivity">
  Bundler / insider / sniper / dev metrics for the quote-side token. See [TokenWalletActivity](/api-reference/graphql/types/TokenWalletActivity).
</ResponseField>

<ResponseField name="top10HoldersPercent" type="Float">Top-10 holder concentration (%).</ResponseField>

<ResponseField name="volume5m" type="String">Volume (USD) over the last 5 minutes.</ResponseField>
<ResponseField name="volume1" type="String">Volume (USD) over the last 1 hour.</ResponseField>
<ResponseField name="volume4" type="String">Volume (USD) over the last 4 hours.</ResponseField>
<ResponseField name="volume12" type="String">Volume (USD) over the last 12 hours.</ResponseField>
<ResponseField name="volume24" type="String">Volume (USD) over the last 24 hours.</ResponseField>

<ResponseField name="priceChange5m" type="Float">Price change % over 5 minutes.</ResponseField>
<ResponseField name="priceChange1" type="Float">Price change % over 1 hour.</ResponseField>
<ResponseField name="priceChange4" type="Float">Price change % over 4 hours.</ResponseField>
<ResponseField name="priceChange12" type="Float">Price change % over 12 hours.</ResponseField>
<ResponseField name="priceChange24" type="Float">Price change % over 24 hours.</ResponseField>

<ResponseField name="highPrice5m" type="String">Highest price over 5 minutes.</ResponseField>
<ResponseField name="highPrice1" type="String">Highest price over 1 hour.</ResponseField>
<ResponseField name="highPrice4" type="String">Highest price over 4 hours.</ResponseField>
<ResponseField name="highPrice12" type="String">Highest price over 12 hours.</ResponseField>
<ResponseField name="highPrice24" type="String">Highest price over 24 hours.</ResponseField>

<ResponseField name="lowPrice5m" type="String">Lowest price over 5 minutes.</ResponseField>
<ResponseField name="lowPrice1" type="String">Lowest price over 1 hour.</ResponseField>
<ResponseField name="lowPrice4" type="String">Lowest price over 4 hours.</ResponseField>
<ResponseField name="lowPrice12" type="String">Lowest price over 12 hours.</ResponseField>
<ResponseField name="lowPrice24" type="String">Lowest price over 24 hours.</ResponseField>

<ResponseField name="createdAt" type="Int">Pool creation timestamp (unix seconds).</ResponseField>

<Warning>
  The following 1-week fields are deprecated — values were inaccurate. They remain in the schema for backwards compatibility and may be removed in a future version.
</Warning>

<ResponseField name="priceChange1w" type="Float" deprecated>Deprecated — inaccurate.</ResponseField>
<ResponseField name="volume1w" type="String" deprecated>Deprecated — inaccurate.</ResponseField>
<ResponseField name="highPrice1w" type="String" deprecated>Deprecated — inaccurate.</ResponseField>
<ResponseField name="lowPrice1w" type="String" deprecated>Deprecated — inaccurate.</ResponseField>
