A wallet's positions
const url = 'https://api.getchord.xyz/v1/lp/positions?chain=5042&unit=usd&owner=example&status=open&limit=100&offset=0';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.getchord.xyz/v1/lp/positions?chain=5042&unit=usd&owner=example&status=open&limit=100&offset=0'Every managed position a wallet holds or held: dollars in and out, fees collected, live value and uncollected fees (V3), in-range, PnL on the liquidity leg, age, and the JIT / unreconciled flags; with a summary (open, closed, wins, realized PnL, fees, open value).
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Chain id: 5042 Arc · 4663 Robinhood Chain · 143 Monad.
native = every money field of the answer in the chain’s own coin (ETH on Robinhood Chain, MON on Monad; Arc’s coin is USDC), each deposit, withdrawal and fee converted at the coin’s price of its own hour, and live values at the price now. The fields keep their …Usd names; unit and unitSymbol in the answer say what they carry. The row rules (the $20 floor, the 20x bound) stay in dollars, so both units score the same positions. 503 UNIT_NOT_READY while a chain’s ledger is being rebuilt with these figures; another value is 400 BAD_UNIT.
EVM address, hex, case-insensitive.
EVM address, hex, case-insensitive.
Only positions holding this token.
A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.
Only positions in this pool.
Rows to skip, newest first: page through a wallet’s closed positions. Out of range is 400 BAD_OFFSET.
Responses
Section titled “ Responses ”object
EVM address, hex, case-insensitive.
object
EVM address, hex, case-insensitive.
A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.
EVM address, hex, case-insensitive.
EVM address, hex, case-insensitive.
EVM address, hex, case-insensitive.
Dollars added.
Dollars removed.
Fees collected.
Unix time, seconds, UTC.
Unix time, seconds, UTC.
Unix time, seconds, UTC.
Live value of the liquidity (open positions).
Uncollected fees (V3).
Liquidity leg only.
Distance from the price to the nearest range edge, percent.
Opened and closed within seconds — a swap trick, shown but not scored.
Dollars out exceed dollars in by far — the tape missed an add; shown, never scored.
object
Unix time, milliseconds — when the server built this answer.
Example
{ "chain": 5042, "owner": "0xb145400da27a2497d9fc2cd5621f2bfd37617af4", "status": "all", "positions": [], "summary": { "open": 0, "closed": 0, "wins": 0, "winRatePct": null, "realizedPnlUsd": 0, "feesUsd": 0, "openValueUsd": 0 }, "updatedAt": 1789891871406}Invalid parameters — error names the check that failed (INVALID_PARAMS, BAD_ADDRESS, BAD_LIMIT, BAD_HOURS, …).
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
Example
{ "error": "INVALID_PARAMS", "message": "amount must be an integer string in the token's smallest unit"}