vike
API EndpointsPolymarket

/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.

cURL
# 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 length
condition_idpathrequired
The 0x-prefixed market condition id. As with /markets/{condition_id}, a token_id here returns [].

A real response, fetched from the running service.

Example response
[
  {
    "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.

cURL
# how did a market actually end, from chain truth: the winning outcome, the payout vector, and the block and time it resolvedcurl -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 settlementcurl -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 resolvedWIN=$(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 lengthcurl -s -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/settlements/0x0000000000000000000000000000000000000000000000000000000000000000" | jq length
Example response
[  {    "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"  }]