# A wallet's positions

`GET https://api.getchord.xyz/v1/lp/positions`

Source: https://getchord.xyz/docs/api-reference/operations/lppositions/

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

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `chain` | query | yes | `5042` · `4663` · `143` | Chain id: `5042` Arc · `4663` Robinhood Chain · `143` Monad. |
| `unit` | query | no | `usd` · `native` (default `usd`) | `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`. |
| `owner` | query | yes | string |  |
| `status` | query | no | `open` · `closed` · `all` (default `all`) |  |
| `token` | query | no | string | Only positions holding this token. |
| `pool` | query | no | string | Only positions in this pool. |
| `limit` | query | no | integer (default `100`) |  |
| `offset` | query | no | integer (default `0`) | Rows to skip, newest first: page through a wallet's closed positions. Out of range is `400 BAD_OFFSET`. |

## Response 200

Example (captured from the live API):

```json
{
  "chain": 5042,
  "owner": "0xb145400da27a2497d9fc2cd5621f2bfd37617af4",
  "status": "all",
  "positions": [],
  "summary": {
    "open": 0,
    "closed": 0,
    "wins": 0,
    "winRatePct": null,
    "realizedPnlUsd": 0,
    "feesUsd": 0,
    "openValueUsd": 0
  },
  "updatedAt": 1789891871406
}
```

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