Polymarket PnL API
A wallet's profit over time, broken down at each point.
GET /v1/polymarket/users/{wallet}/pnl1 credit Failed requests are free
About this endpoint
GET /v1/polymarket/users/{wallet}/pnl returns data.points, oldest first. Each point is the same PnL breakdown the stats route returns, including asOf, sourceBlock, realized, unrealized, settled, economic, income by source, fees and volume. data.interval and data.fidelity echo the range and spacing you got.
interval is 6h, 12h, 1d, 1w, 1m, all or max, defaulting to 1m. fidelity is 1h, 3h, 12h, 18h or 1d, defaulting to 1d. A wallet that never traded returns a found answer with an empty points array.
Polymarket PnL API FAQ
What is fidelity?
The spacing between points. interval sets how far back the series goes, and fidelity sets how often a point is recorded. A 1m interval with 1d fidelity gives daily points for a month.
Why are there no points?
A wallet with no trading history returns an empty series. Check lookupStatus and the points array. For a single current snapshot, use the stats route instead of a one-point series.
Is this a price chart?
No. Each point is the wallet's profit and loss at that time, not a market price. For an outcome token's price series use GET /v1/polymarket/tokens/{tokenId}/price-history.
What does lookupStatus mean on this route?
found means the object or list was returned. not_found means no matching object exists. HTTP 200 only means the request finished, so branch on data.lookupStatus before storing a row.
How much does this route cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
Other Polymarket endpoints
- EventsGET /v1/polymarket/events
- EventGET /v1/polymarket/events/{eventIdOrSlug}
- Event insightsGET /v1/polymarket/events/{eventIdOrSlug}/insights
- Event annotationsGET /v1/polymarket/events/{eventIdOrSlug}/annotations
- Event commentsGET /v1/polymarket/events/{eventId}/comments
- MarketsGET /v1/polymarket/markets
- Markets batchGET /v1/polymarket/markets/batch
- MarketGET /v1/polymarket/markets/{marketIdSlugOrConditionId}