Pools
Pool identity, swaps, ticks, candles, liquidity and rolling statistics, including Uniswap V4.
Everything keyed by a pool. V4 pools are keyed by manager address plus pool id rather than a pool address, so they have their own parallel route set. Liquidity is protocol-native: V2 reserves and concentrated-liquidity depth are different measurements and are not merged.
20 routes. Every path below is served under /index/v1/{chain}, and every request carries an x-api-key header, so those two are not repeated per route. The shared contract for pagination, snapshots, precision and absence is in Read API.
Pools By Currency
GET /currencies/{currency}/poolsPools holding a given currency on either side.
| Parameter | In | Required | Notes |
|---|---|---|---|
currency | path | yes | 0x-prefixed 20-byte hex address. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
Pool
GET /pools/{address}Pool identity: protocol, both currencies, fee and tick spacing, factory coordinate, embedded stats.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
Pool ATH
GET /pools/{address}/athAll-time high price for the pool.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
Pool ATL
GET /pools/{address}/atlAll-time low, same shape.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
Pool Liquidity
GET /pools/{address}/liquidityExact protocol-native liquidity: V2 reserves, or V3 active depth at the current tick; plus liquidityUsd (V2 reserves, or V3 current-tick-spacing range amounts, each side through its own USD mark; null with a reason when a side is unpriced) and usdMarks.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
Pool OHLCV
GET /pools/{address}/ohlcv1m/1h/1d candles with two-sided volume and rational OHLC.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
frame | query | yes | 1s, 30s, 1m, 1h, or 1d candle width. 1s/30s rows exist only for a pool with durable fine-candle retention; see the response's own fineSeriesAvailable. |
from | query | yes | Inclusive start of the unix-second range the candle series covers, aligned down to its frame's own bucket width. Must be <= to. |
to | query | yes | Inclusive end of the unix-second range the candle series covers, aligned down to its frame's own bucket width. The requested span is capped at a fixed number of candle buckets. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
Pool Stats
GET /pools/{address}/statsRolling 5m/1h/4h/24h statistics for the pool.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
Pool Swaps
GET /pools/{address}/swapsExact swaps for the pool with full block, transaction and log coordinates.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
Pool Ticks
GET /pools/{address}/ticksPer-trade tick rows enriched with transaction context.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
Pool Bars
GET /pools/{address}/ticks/barsN-trade or N-volume bars folded over the tick sequence.
| Parameter | In | Required | Notes |
|---|---|---|---|
address | path | yes | 0x-prefixed 20-byte hex address. |
rule | query | yes | rule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk. |
size | query | yes | rule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
New Pools
GET /pools/newNewest-first feed of registered pools, by creation coordinate.
| Parameter | In | Required | Notes |
|---|---|---|---|
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
Pool Search
GET /pools/searchBounded, filtered pool discovery anchored on one currency, in pool-identity order by default (sort=pool_identity). sort=volume_24h (requires token, descending only) ranks the token's markets by trailing-24h volume exactly as /tokens/{address}/pools/ranked does (quote-native under quote, else USD with unpriced pools last), with the same refinement filters and allowScan rule; rows add rank, quoteAsset, rankedVolume24hQuote, rankedVolume24hUsd, and the page adds rankingBasis, membership and usdMarks. sort=liquidity is refused (400); the USD-liquidity ranking is /tokens/{address}/pools/ranked?sort=liquidity.
| Parameter | In | Required | Notes |
|---|---|---|---|
allowScan | query | no | Required only when a refinement filter (fee_tier, protocol, created_from, created_to) makes the indexed walk examine rows that are not returned. An unfiltered anchor-currency page and an unfiltered token+quote pair page are both indexed. |
token | query | no | token/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below. |
quote | query | no | token/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below. |
fee_tier | query | no | token/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below. |
protocol | query | no | token/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below. |
factory | query | no | Always rejected with a 400: this store does not retain which factory emitted a pool's identity, so there is no value to filter or report on. The field exists only so the rejection is specific rather than a generic "unknown field" error. Supported filters: token, quote, fee_tier, protocol, created_from, created_to. |
created_from | query | no | token/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below. |
created_to | query | no | token/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
V4 Pool
GET /pools/v4/{manager}/{pool_id}V4 pool identity, keyed by manager address and pool id rather than a pool address.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
V4 Pool Liquidity
GET /pools/v4/{manager}/{pool_id}/liquidityV4 liquidity observation, plus liquidityUsd as for V3.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
V4 Pool OHLCV
GET /pools/v4/{manager}/{pool_id}/ohlcvV4 candles.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
frame | query | yes | 1s, 30s, 1m, 1h, or 1d candle width. 1s/30s rows exist only for a pool with durable fine-candle retention; see the response's own fineSeriesAvailable. |
from | query | yes | Inclusive start of the unix-second range the candle series covers, aligned down to its frame's own bucket width. Must be <= to. |
to | query | yes | Inclusive end of the unix-second range the candle series covers, aligned down to its frame's own bucket width. The requested span is capped at a fixed number of candle buckets. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
V4 Pool Stats
GET /pools/v4/{manager}/{pool_id}/statsV4 rolling-window statistics.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
V4 Pool Swaps
GET /pools/v4/{manager}/{pool_id}/swapsV4 swaps.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
V4 Pool Ticks
GET /pools/v4/{manager}/{pool_id}/ticksV4 per-trade ticks.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
V4 Pool Bars
GET /pools/v4/{manager}/{pool_id}/ticks/barsV4 trade or volume bars.
| Parameter | In | Required | Notes |
|---|---|---|---|
manager | path | yes | The V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route. |
pool_id | path | yes | Stored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route. |
rule | query | yes | rule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk. |
size | query | yes | rule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |
Pools By Token
GET /tokens/{currency}/poolsPools where this address is one of the two currencies, in pool-identity order (not a ranking; includes pools where the address is the QUOTE). For a volume-ranked list of the token's own markets use /pools/ranked.
| Parameter | In | Required | Notes |
|---|---|---|---|
currency | path | yes | 0x-prefixed 20-byte hex address. |
cursor | query | no | Opaque page cursor. See Pagination. |
limit | query | no | Page row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema. |
order | query | no | Sort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract. |