Settled contest history for a series
const url = 'https://api.cotes.ai/v1/contests?series=KXBTC15M&limit=20';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.cotes.ai/v1/contests?series=KXBTC15M&limit=20' \ --header 'Authorization: Bearer <token>'Settled rounds for a series prefix (e.g. KXBTC15M), newest first, each with
all Cotes AI signals and their graded outcomes. This is the endpoint for
“how did the signals actually do” — live rounds are excluded, since their
signals are still pending.
since and before window on window.expires_at, which for a 15-minute
round is its settlement time. before is inclusive, so paginate by passing
the oldest expires_at you received and discarding the repeated first row.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Series prefix, e.g. KXBTC15M. Match is exact and case-sensitive on the prefix. A full ticker also resolves while that round is live, but use /v1/contests/{ticker} for a specific round.
Example
KXBTC15MMaximum rounds to return, newest first.
Only rounds settling at or after this instant (ISO 8601).
Only rounds settling at or before this instant (ISO 8601), inclusive.
Responses
Section titled “Responses”Settled contests, newest first. Empty when the series has none.
object
object
object
Strike / to-beat underlying price in USD, if known.
Oracle settled underlying price (expiration value) in USD once the contest is settled; null while live or if the oracle did not report it.
All Cotes AI signals for this contest (consumers apply their own thresholds).
object
Contest ticker this signal belongs to (same as parent Contest.ticker).
Model probability on side (0–100).
Venue quote for side on the 0–100¢ scale ($0.54 → 54). Same denomination as edge_cents.
Confidence − entry_price_cents. Signed probability points, not settlement money.
Version tag of the model that produced this reading. Stable across a model’s life and changes only when a new model is deployed, so it groups readings by the model behind them. Null on readings stored before the tag was recorded.
Example
{ "contests": [ { "state": "live", "settled_side": "up", "signals": [ { "side": "up", "outcome": "pending", "model_version": "c5456da6" } ] } ]}Missing or invalid API key
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example"}Invalid query parameter (e.g. limit out of range).
Too many requests
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example"}