---
title: "A wallet's positions"
method: GET
path: "/lp/positions"
tags: ["Liquidity"]
---

# A wallet's positions

`GET /lp/positions`

## Request

- Base URL: `https://api.getchord.xyz/v1`
- URL: `https://api.getchord.xyz/v1/lp/positions`
- Auth: none declared

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).

## Query parameters

- `chain` 5042 | 4663 | 143, required
- `unit` 'usd' | 'native'
- `owner` string, required: EVM address, hex, case-insensitive.
- `status` 'open' | 'closed' | 'all'
- `token` string: EVM address, hex, case-insensitive.
- `pool` string: A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.
- `limit` integer
- `offset` integer

## Response `200`

- object
  - `chain` integer
  - `owner` string: EVM address, hex, case-insensitive.
  - `status` string
  - `positions` LpPosition[]
    - `manager` string: EVM address, hex, case-insensitive.
    - `tokenId` string
    - `pool` string, nullable: A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.
    - `dex` string, nullable
    - `kind` 'v3' | 'v4'
    - `owner` string, nullable: EVM address, hex, case-insensitive.
    - `token` string, nullable: EVM address, hex, case-insensitive.
    - `anchor` string, nullable: EVM address, hex, case-insensitive.
    - `tickLower` integer, nullable
    - `tickUpper` integer, nullable
    - `symbol` string, nullable
    - `anchorSymbol` string, nullable
    - `logo` string, nullable
    - `inUsd` number: Dollars added.
    - `outUsd` number: Dollars removed.
    - `feesUsd` number: Fees collected.
    - `adds` integer
    - `removes` integer
    - `collects` integer
    - `openedTs` integer, nullable: Unix time, seconds, UTC.
    - `lastTs` integer: Unix time, seconds, UTC.
    - `closedTs` integer, nullable: Unix time, seconds, UTC.
    - `burned` boolean
    - `status` 'open' | 'closed'
    - `valueUsd` number, nullable: Live value of the liquidity (open positions).
    - `uncollectedUsd` number, nullable: Uncollected fees (V3).
    - `inRange` boolean, nullable
    - `pnlUsd` number, nullable: Liquidity leg only.
    - `pnlPct` number, nullable
    - `ageHours` number, nullable
    - `edgePct` number, nullable: Distance from the price to the nearest range edge, percent.
    - `jit` boolean: Opened and closed within seconds — a swap trick, shown but not scored.
    - `unreconciled` boolean: Dollars out exceed dollars in by far — the tape missed an add; shown, never scored.
  - `summary` object
    - `open` integer
    - `closed` integer
    - `wins` integer
    - `winRatePct` number, nullable
    - `realizedPnlUsd` number
    - `feesUsd` number
    - `openValueUsd` number
  - `updatedAt` integer: Unix time, milliseconds — when the server built this answer.

## Other responses

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

---

[API](https://skmtc.dev/getchord/apis/chord-api.md) · [All operations](https://skmtc.dev/getchord/apis/chord-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getchord/apis/chord-api/revisions/d3bc4640fea0?raw)
