Skip to content

One pool

GET
/lp/pools/{pool}
curl --request GET \
--url 'https://api.getchord.xyz/v1/lp/pools/example?chain=5042'

The pool row plus its hourly series (the last 168 hours by default; hours up to 720), the top providers over 7 days, the health score with its parts and reasons, launch facts (who launched it, how much of the liquidity the launcher holds and has pulled), and mint — what a wallet needs to add liquidity here (the position manager, the pool key, Permit2, tick spacing).

pool
required

A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.

string
/^0x([a-fA-F0-9]{40}|[a-fA-F0-9]{64})$/
chain
required
integer
Allowed values: 5042 4663 143

Chain id: 5042 Arc · 4663 Robinhood Chain · 143 Monad.

hours
integer

Hours of the hourly series, 24 to 720 (default 168)

Media typeapplication/json
object
pool

A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.

string
/^0x([a-fA-F0-9]{40}|[a-fA-F0-9]{64})$/
dex
string
kind
string
Allowed values: v2 clmm v4
feeBps
number | null
hooks

EVM address, hex, case-insensitive.

string | null
/^0x[a-fA-F0-9]{40}$/
lpAccess

hooked = a V4 hook can refuse adds.

string
Allowed values: open hooked unknown
tickSpacing
integer | null
token0

A token as it appears inside a pool row.

object
address

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol

Symbol from the contract, or null while unresolved.

string | null
decimals

ERC-20 decimals.

integer | null
logo

Logo URL, or null.

string | null
impostor

True when the symbol copies the chain’s anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.

boolean
token1

A token as it appears inside a pool row.

object
address

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol

Symbol from the contract, or null while unresolved.

string | null
decimals

ERC-20 decimals.

integer | null
logo

Logo URL, or null.

string | null
impostor

True when the symbol copies the chain’s anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.

boolean
tokenSide

Which side is the non-anchor token (0 or 1).

integer | null
tvlUsd
number | null
tvlSrc

Where TVL came from (onchain, dexscreener, …).

string | null
tvlAt

Unix time, seconds, UTC.

integer | null
vol
object
h1
number
h6
number
h24
number
d7
number
fees

Volume × the pool’s fee tier.

object
h1
number | null
h6
number | null
h24
number | null
feeTvlPct

Fees ÷ TVL, percent.

object
h1
number | null
h6
number | null
h24
number | null
aprPct

24h fee/TVL × 365 — a full-range yardstick, not a promise.

number | null
trades24h
integer
wallets24h
integer
priceUsd
number | null
lpAdd24h
number
lpRemove24h
number
providers24h
integer
firstSeenTs

Unix time, seconds, UTC.

integer
createdTs

Unix time, seconds, UTC.

integer | null
lastTradeHour
integer
turnover24h

24h volume ÷ TVL.

number | null
suspect

Wash or launch-farm printing (volume without traders, dust TVL under real volume, turnover no honest pool reaches). Hidden by default; flagged=1 shows them.

boolean
score

0–100 health score (traders, TVL, yield sanity, LP flow, age, penalties).

integer
marketCapUsd

The tracked token’s price × its total supply on this chain (for a bridged token: what was bridged here). On the list only; null when the pool tracks neither side, the tracked side is the native coin, or the supply is not on record yet.

number | null
chain
integer
hourly
Array<object>
object
hour
integer
vol
number
trades
integer
price
number | null
topLps
Array<object>
object
wallet

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
addUsd
number
removeUsd
number
netUsd
number
events
integer
lastTs

Unix time, seconds, UTC.

integer
health
object
score
integer
parts
object
traders
number
tvl
number
yieldSanity
number
lpFlow
number
age
number
penalties
number
reasons
Array<string>
launch
object
launcher

EVM address, hex, case-insensitive.

string | null
/^0x[a-fA-F0-9]{40}$/
launcherName
string | null
creator

EVM address, hex, case-insensitive.

string | null
/^0x[a-fA-F0-9]{40}$/
hooks

EVM address, hex, case-insensitive.

string | null
/^0x[a-fA-F0-9]{40}$/
launchedTs

Unix time, seconds, UTC.

integer | null
launcherLpAddedUsd
number
totalLpAddedUsd
number
launcherSharePct
number | null
launcherLastRemoveTs

Unix time, seconds, UTC.

integer | null
launcherRemovedUsd
number
mint
object
kind
string
manager

EVM address, hex, case-insensitive.

string | null
/^0x[a-fA-F0-9]{40}$/
permit2

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
token0

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
token1

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
feePips
integer | null
tickSpacing
integer | null
hooks

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
feeRaw

V4 dynamic-fee pools carry the 0x800000 flag.

integer | null
nativeCurrency0
boolean
updatedAt

Unix time, milliseconds — when the server built this answer.

integer
Example
{
"chain": 5042,
"pool": "0xf53f02d9041d00bbd92235b4c902b9f350c554a8ed2dc64fa0a4585aac413f09",
"dex": "uniswap_v4",
"kind": "v4",
"feeBps": 98.8,
"hooks": null,
"lpAccess": "open",
"tickSpacing": 99,
"token0": {
"address": "0x3600000000000000000000000000000000000000",
"symbol": "USDC",
"decimals": 6,
"logo": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
"impostor": false
},
"token1": {
"address": "0x8faae5592b9acc27a79fca745c6b872adf514a5d",
"symbol": "MURMUR",
"decimals": 18,
"logo": "https://cdn.dexscreener.com/cms/images/QUq-IqT1GLQNkxMx?width=800&height=800&quality=95&format=auto",
"impostor": false
},
"tokenSide": 1,
"tvlUsd": 12650.66,
"tvlSrc": "dexscreener",
"tvlAt": 1789891603,
"vol": {
"h1": 176.542824,
"h6": 38476.48885700001,
"h24": 184500.14476700005,
"d7": 279614.0964730001
},
"fees": {
"h1": 1.74424310112,
"h6": 380.1477099071601,
"h24": 1822.8614302979606
},
"feeTvlPct": {
"h1": 0.01378776365122452,
"h6": 3.0049634557182006,
"h24": 14.40921999562047
},
"aprPct": 5259.365298401472,
"trades24h": 3050,
"wallets24h": 131,
"priceUsd": 0.0007671677499328048,
"lpAdd24h": 8037.861902775549,
"lpRemove24h": 7583.743885515529,
"providers24h": 25,
"firstSeenTs": 1789693200,
"createdTs": 1789695461,
"lastTradeHour": 1789891200,
"turnover24h": 14.584230764798047,
"suspect": false,
"hourly": [
{
"hour": 1789693200,
"vol": 398.305695,
"trades": 24,
"price": 0.00008817848931962542
},
{
"hour": 1789696800,
"vol": 1958.7937559999996,
"trades": 77,
"price": 0.00010307489720874844
}
],
"topLps": [
{
"wallet": "0x25cacb704ed0852428e7cc0687bca45ee8c21848",
"addUsd": 5763.889211498252,
"removeUsd": 0,
"netUsd": 5763.889211498252,
"events": 1,
"lastTs": 1789695461
},
{
"wallet": "0x5db28691cbfc2ceeca1d919f0749b64013c25432",
"addUsd": 3885.2424150632846,
"removeUsd": 1296.008402,
"netUsd": 2589.2340130632847,
"events": 254,
"lastTs": 1789886789
}
],
"health": {
"score": 34,
"parts": {
"traders": 17.6,
"tvl": 13.7,
"yieldSanity": 4,
"lpFlow": 15,
"age": 3.2,
"penalties": 20
},
"reasons": [
"the launcher holds 100% of the liquidity added",
"fee/TVL over 10 %/day: volume is not organic or TVL is not the whole picture"
]
},
"launch": {
"launcher": "0x6049c9a0e26405c0985f9e3685c87d0ae917f82b",
"launcherName": "Uniswap Liquidity Launcher",
"creator": "0x25cacb704ed0852428e7cc0687bca45ee8c21848",
"hooks": null,
"launchedTs": 1789695461,
"launcherLpAddedUsd": 15907.554822267326,
"totalLpAddedUsd": 15907.554822267326,
"launcherSharePct": 100,
"launcherLastRemoveTs": 1789888952,
"launcherRemovedUsd": 7697.230608504608
},
"mint": {
"kind": "v4",
"manager": "0x6049c9a0e26405c0985f9e3685c87d0ae917f82b",
"permit2": "0x000000000022d473030f116ddee9f6b43ac78ba3",
"token0": "0x3600000000000000000000000000000000000000",
"token1": "0x8faae5592b9acc27a79fca745c6b872adf514a5d",
"feePips": 9880,
"tickSpacing": 99,
"hooks": "0x0000000000000000000000000000000000000000",
"feeRaw": 9880,
"nativeCurrency0": false
},
"updatedAt": 1789891869303
}

Invalid parameters — error names the check that failed (INVALID_PARAMS, BAD_ADDRESS, BAD_LIMIT, BAD_HOURS, …).

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
Example
{
"error": "INVALID_PARAMS",
"message": "amount must be an integer string in the token's smallest unit"
}

Nothing at this identity (NOT_FOUND, UNKNOWN_TOKEN, NO_ROUTE).

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
Example
{
"error": "INVALID_PARAMS",
"message": "amount must be an integer string in the token's smallest unit"
}