/settlements/{condition_id}
The on-chain settlement of one market — which outcome won, the payout vector, and the block and timestamp at which it resolved. For "how did this end", this is the authority.
GET https://data.vike.io/v1/polymarket/settlements/{condition_id}The on-chain settlement of one market: which outcome won, what the payout vector was, and the block and timestamp at which it resolved. Call it to determine, from chain truth, how a market actually ended.
That is the call behind this page's response — a market that has already resolved on chain, so its payout vector is immutable and this example cannot go stale.
# how did a market actually end, from chain truth: the winning outcome, the payout vector, and the block and time it resolved
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13"
# the same market's directory row, to compare its lifecycle flags with this settlement
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13"
# keep the winning token id: winning_index indexes token_ids, and winning_token_id is that entry already resolved
WIN=$(curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13" | jq -r '.[0].winning_token_id')
# then the winner's own probability candles, daily, to see how the market priced it on the way to 1 (an unrecorded token returns [])
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/ohlcv?token_id=$WIN&interval=1d&limit=60"
# [] is what an id the chain has not resolved gets: a market still trading, a cancelled or voided one,
# or an id that is no condition_id. It is 200, never a 404, and never proof of "open": test the length
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/0x0000000000000000000000000000000000000000000000000000000000000000" | jq lengthcondition_idpathrequiredA real response, fetched from the running service.
[
{
"condition_id": "0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13",
"payouts": [0, 1],
"resolved_block": 93138611,
"resolved_ts_ms": 1788412950000,
"slug": "will-donna-vekic-win-the-2026-womens-us-open",
"token_ids": ["100208760979006815700821365554623989048585541964271047036444923380678560443951", "43437917871736289675135437047499696002273396903387531260510673476203211904981"],
"winning_index": 1,
"winning_token_id": "43437917871736289675135437047499696002273396903387531260510673476203211904981"
}
]winning_index indexes into token_ids, and winning_token_id is that entry resolved for you.
payouts is the on-chain payout vector in the same order.
This is the on-chain resolution, and [] here means the chain resolved nothing, never "still open": Polymarket data model.
There is no bare /settlements and no flat spelling
/v1/polymarket/settlements without a condition id is not a route: it answers 404, and the
retired flat /v1/settlements/{condition_id} does the same. The working form always carries the
condition id.
/events
The raw per-market event tape — book snapshots and deltas, trade prints, tick-size changes and status markers. The finest grain the API offers, capped at a 24-hour window and the only endpoint here that pages by cursor.
/archive/datasets
A JSON index of every downloadable archive partition across both Hive layouts, each row carrying the absolute download URL beside the known size and row count.