Get how well Polymarket prices predicted outcomes
/v1/pm/calibrationCall this to see whether market prices were honest. data.buckets has twenty price buckets of width 0.05, each with the number of markets, their mean price and the share that came true. brier is the mean squared gap between price and outcome, where lower is better. The price is taken horizon before a market resolved: 4h, 12h (the default), 1d or 1w. market_kind picks the markets: other (the default, ordinary markets), updown (short Up or Down markets), unknown or all.
Every answer carries data.coverage, which says the history ends at Polygon block 85,948,288 (2026-04-24 07:43:40 UTC), names the source (Envio's public Polymarket dataset, licence CC BY 4.0) and holds the attribution line and the modified notice. Keep both wherever you show the data. meta.as_of["eip155:137"] repeats the last block, and meta.finality is finalized. Polygon is not a chain Sona serves, so the route has no {chain}.
Query parameters
| Name | Type | Description |
|---|---|---|
horizon | stringDefault 12h | How long before a market resolved to take its price: |
market_kind | stringDefault other | Which markets to count: |
Response
The answer, wrapped in the {data, meta, links} envelope.
| Field | Type | Description |
|---|---|---|
| brier | number | null | The mean squared gap between price and outcome, lower is better, |
| buckets | array of objects | Twenty buckets of width 0.05 on the price, in order. |
| coverage | object | What period the Polymarket data covers, where it comes from and the notices that must be shown with it. |
| excluded | object | What was left out. |
| horizon_hours | integer | How long before resolution the price is taken, in hours. |
| kind | string | Always |
| market_kind | string | Which markets were counted. |
| markets | integer | The markets counted, the sum over the buckets. |
Cost
1 credit. The time limit is 5 seconds.
Errors
| Status | Code |
|---|---|
| 400 | invalid_query |
| 429 | rate_limitedcredits_exhausted |
| 500 | internal |
| 503 | upstream_unavailable |
| 504 | deadline_exceeded |
400 invalid_query for a bad horizon or market_kind or any other query key, 429 rate_limited or credits_exhausted, 503 upstream_unavailable while the dataset is not loaded, and 504 deadline_exceeded when the budget runs out.