GET
/v2/user-pnlGet a user's PnL series
Complete cumulative native-PnL atoms and compositions.
- Base URL
- https://data-api.polymarket.com
- Auth
- Public, no key
- Rate limit
- 800 req / 10s (80 per second)
- Limit applies to
- General (all /v2 endpoints)
Things to know
Every v2 response wraps its payload in a data field. Paginated reads return an opaque cursor in pagination and do not accept offset. Under load the API answers 429 with a Retry-After header.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| user | query | stringnull | yes | Proxy wallet. The `user_address` spelling is accepted as an alias. |
| interval | query | stringnull | no | Window: `max`, `all`, `1m`, `1w`, `1d`, `12h`, or `6h`. Defaults to `1d`. |
| fidelity | query | stringnull | no | Output grid: `1d`, `18h`, `12h`, `3h`, or `1h`. Defaults to `1h`. |
user is listed as optional in Polymarket's OpenAPI spec, but the API returns 400 without it (checked 2026-10-04).
Example
curl -X GET "https://data-api.polymarket.com/v2/user-pnl?user=<user>"Response fields
| Field | Type | Description |
|---|---|---|
| fidelity | string | Grid step the points were synthesized on (`1d`, `18h`, `12h`, `3h`, `1h`). |
| interval | string | The window served (`max`, `all`, `1m`, `1w`, `1d`, `12h`, `6h`). |
| points | object[] | Dense cumulative points on the requested grid, oldest first. |
| proxy_wallet | string | The wallet the series was computed for. |
| source_fidelity | string | Historical MVP observations are daily even when carried onto a finer grid. |
Responses
| Status | Meaning |
|---|---|
| 200 | Cumulative user-PnL series |
| 400 | Invalid wallet, interval, or fidelity, including a wallet that is a known protocol contract address |
| 429 | Service is at heavy-query capacity; retry after `Retry-After` |
| 500 | Internal server error |
| 503 | Timed out (the request deadline, the datastore statement timeout, or the connection pool's acquire budget) or a serving dependency is unavailable; retry after `Retry-After` |
From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.