Polymarket API reference / Data API v2
GET/v2/resolutions

Get resolution state

Complete resolution state by one selector family. Supply exactly one of `question_id`, `condition`, or `event_id`. Condition and event selectors accept comma-separated values and return condition-grain rows in deterministic order, preferring native V2 lifecycle, then UMA lifecycle, then terminal CTF state. Misses return `{ "data": [] }`.

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
question_idquerystringnullnoOne UMA question identifier (`0x` plus 64 hexadecimal characters).
conditionquerystringnullnoComma-separated Gamma condition identifiers (at most 20 distinct values).
event_idquerystringnullnoComma-separated positive Gamma event IDs (at most 20 distinct values).

Example

curl -X GET "https://data-api.polymarket.com/v2/resolutions"

Returns a list of objects with these fields

FieldTypeDescription
dataobject[]

Responses

StatusMeaning
200Resolution rows for the selected question, markets, or events
400Missing, mixed, empty, or invalid selector
429Too many requests; 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.