Skip to main content
Error bodies are JSON with a detail string. Validation errors (422) use an array of field errors instead.

Status codes

Plan limits

Plans gate three things:
  • Finest resolution (1m through 1d)
  • Rolling lookback window (max_history_days)
  • Which of metrics, prices, and books you can query
GET /v1/usage returns the live values for your key:
A history call outside those limits returns 403, for example:
Compare your request to GET /v1/usage before you retry. Upgrading a plan takes effect immediately.

Rate limits

429 means you exhausted the current RPM window. reset_at on /v1/usage is the Unix timestamp when the window resets (null on unlimited plans).
Reuse a requests.Session (or the SDK client) and pace bursts. A short sleep between market loops is faster end-to-end than retrying 429s.
The Python SDK retries 429 and 5xx with exponential backoff and jitter. Tune max_retries, retry_backoff_base, retry_backoff_max, and timeout on PolymarketDataClient.

History validation examples

Standard coverage starts in August 2025. Asking for an earlier start_ts on a non-enterprise plan returns 403.