Discovery and markets API

Which concentrated-liquidity LP positions are locked, by whom and until when?

Browse the v3 or v4 LP position NFTs locked in one locker protocol across chains, pool by pool, with each lock's owner and end. Paged; no pool or chain filter.

GET/api/external/discovery/lp-position-locks

What it returns

One page of the registry of concentrated-liquidity (v3) or hook-pool (v4) LP position NFTs locked in one locker protocol, across every chain it runs on, pool by pool: each lock with the position id, who can withdraw it, when it was locked and when it ends. A browse, not a lookup: the registry cannot be filtered by pool, token or chain, so to check one pool page through and match pool and chainId. Covers one locker protocol only; for whether a token's LP is locked or burned across lockers use lp-safety. Rows on chains this API does not serve carry chain: null and their numeric chainId. hasMore is true whenever the page came back full; the page after the last is empty. No chain.

Chains

This endpoint is not tied to a chain: it takes no chain in its request.

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/discovery/lp-position-locks"
Parameters
ParameterDescription
version

query · string · optional

v3 for concentrated-liquidity positions, v4 for hook-pool positions. Defaults to v3.v3v4
page

query · integer · optional

Which page, from 1. Defaults to 1.
pageSize

query · integer · optional

Pools per page, 1-100. Defaults to 50. pageSize ≤ 75 keeps the answer under 32 KB.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Which concentrated-liquidity LP positions are locked, by whom and until when?
FieldTypeDescription
versionstringThe registry read.
pageintegerThe page read.
pageSizeintegerThe page size asked for.
hasMorebooleantrue when the page came back full, so the next page may hold more.
poolsobject[]Pools with locked positions, in the registry's order.
pools[].chainstring | nullThis API's chain code, e.g. BASE; null for a chain it does not serve.
pools[].chainIdintegerThe EVM chain id, e.g. 8453.
pools[].poolstringv3: the pool contract address. v4: the pool id (32 bytes, hex). Lowercase.
pools[].positionManagerstring | nullThe position manager contract the locked position NFTs belong to, lowercase.
pools[].locksobject[]The locked positions in this pool.
pools[].locks[].lockIdstringThe locker's id for the lock, a decimal string.
pools[].locks[].positionIdstring | nullThe position NFT's token id at the position manager, a decimal string.
pools[].locks[].ownerstring | nullWho can withdraw the position when the lock ends, lowercase.
pools[].locks[].lockedAtinteger | nullWhen the lock was made, unix seconds.
pools[].locks[].unlocksAtinteger | nullWhen the lock ends, unix seconds. A permanent lock carries 253370764800 (year 9999).
pools[].locks[].permanentboolean | nullWhether the lock never ends.

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key