Polymarket API reference / Data API v2
GET/v2/user-pnl

Get 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

NameInTypeRequiredDescription
userquerystringnullyesProxy wallet. The `user_address` spelling is accepted as an alias.
intervalquerystringnullnoWindow: `max`, `all`, `1m`, `1w`, `1d`, `12h`, or `6h`. Defaults to `1d`.
fidelityquerystringnullnoOutput 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

FieldTypeDescription
fidelitystringGrid step the points were synthesized on (`1d`, `18h`, `12h`, `3h`, `1h`).
intervalstringThe window served (`max`, `all`, `1m`, `1w`, `1d`, `12h`, `6h`).
pointsobject[]Dense cumulative points on the requested grid, oldest first.
proxy_walletstringThe wallet the series was computed for.
source_fidelitystringHistorical MVP observations are daily even when carried onto a finer grid.

Responses

StatusMeaning
200Cumulative user-PnL series
400Invalid wallet, interval, or fidelity, including a wallet that is a known protocol contract address
429Service is at heavy-query capacity; retry after `Retry-After`
500Internal server error
503Timed 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`
Polymarket's API serves current state only, so it cannot show what a market's book looked like after it resolved. PolyTest records Up/Down markets while they run and keeps the snapshots. Try it free, or read the full rate limit reference.

From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.