Recipe 2 of 30
How long after a 5-minute window closes does the market resolve on-chain?
About 80 seconds on the captured BTC and ETH 5-minute markets; take resolved_ts_ms from /settlements/bulk and subtract the window end that the slug encodes.
GET /v1/polymarket/settlements/bulk answers it in one call for a whole family of 5-minute markets. Each row carries resolved_ts_ms, the on-chain time of the resolution, and a slug such as btc-updown-5m-1792840200 whose number is the window START in epoch seconds. The window ends 300 seconds later, so the lag is resolved_ts_ms / 1000 - (start + 300). The full parameter list is on Settlements in bulk.
Quick answer
Ask for one family by its slug prefix, from a moment a few hours back.
# settled 5-minute BTC markets that resolved in the last six hours, oldest resolution first
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&from_ms=1792840425357&limit=5"Example response
Captured from the live API on 2026-10-24 at 17:13 UTC, trimmed to 3 of 5 rows. The first slug ends in 1792840200, which is 11:10 UTC, the 7:10 AM ET start the question names. That window ended at 1792840500 and resolved at 1792840580: 80 seconds later. All five rows of the page resolved 80 seconds after their window ended. resolved_block is the Polygon block of the resolution.
{
"settlements": [
{
"condition_id": "0x9d4a1f3a90bbe4f4041509b77cef4a12b53696a2edb457ff86001386746226c0",
"market_known": true,
"outcomes": ["Up", "Down"],
"payouts": [0, 1],
"question": "Bitcoin Up or Down - October 24, 7:10AM-7:15AM ET",
"resolved_block": 96090139,
"resolved_ts_ms": 1792840580000,
"slug": "btc-updown-5m-1792840200",
"token_ids": ["49453782677730298729295238194951727156421227964664364260179136470131299796336", "47308938681852370891240392538597346060423878069086601789592769907537520980452"],
"winning_index": 1,
"winning_outcome": "Down",
"winning_token_id": "47308938681852370891240392538597346060423878069086601789592769907537520980452"
},
{
"condition_id": "0xcfb16d520ebf54b7514ce1eedd5909b4323a9a0b3920cbefaeac1cbcf73f11f2",
"market_known": true,
"outcomes": ["Up", "Down"],
"payouts": [0, 1],
"question": "Bitcoin Up or Down - October 24, 7:15AM-7:20AM ET",
"resolved_block": 96090339,
"resolved_ts_ms": 1792840880000,
"slug": "btc-updown-5m-1792840500",
"token_ids": ["85784149227303613638341017364731923981611540916011819710136988927641383633494", "16541296196090741311082954599867423424979192794133794825329466151820172687978"],
"winning_index": 1,
"winning_outcome": "Down",
"winning_token_id": "16541296196090741311082954599867423424979192794133794825329466151820172687978"
},
{
"condition_id": "0x7b061dd26a62259ea989c24b8b65c1ef7afdef3482b52115b138c961c9db8be5",
"market_known": true,
"outcomes": ["Up", "Down"],
"payouts": [1, 0],
"question": "Bitcoin Up or Down - October 24, 7:30AM-7:35AM ET",
"resolved_block": 96090939,
"resolved_ts_ms": 1792841780000,
"slug": "btc-updown-5m-1792841400",
"token_ids": ["5215286013935166932949927561348554597142982857786946390356010517718229314761", "30141277095055124433573657229458313296350504914599659602978341228997533459864"],
"winning_index": 0,
"winning_outcome": "Up",
"winning_token_id": "5215286013935166932949927561348554597142982857786946390356010517718229314761"
}
],
"has_more": true,
"next_cursor": "1792841780000:0x7b061dd26a62259ea989c24b8b65c1ef7afdef3482b52115b138c961c9db8be5"
}Variations
Compute the lag in the shell. Let jq read the start out of each slug and subtract the window end.
# seconds between the end of each 5-minute window and its on-chain resolution
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&from_ms=1792840425357&limit=5000" | jq '.settlements[] | {slug, lag_s: (.resolved_ts_ms / 1000 - ((.slug | split("-") | last | tonumber) + 300))}'Another coin. The ETH family uses the same slug scheme. The captured page resolved 80, 78 and 80 seconds after the window end.
# settled 5-minute ETH markets from the same six hours
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=eth-updown-5m-&from_ms=1792840425357&limit=3"The next page. Pass next_cursor back verbatim until has_more is false.
# resume strictly after the last row of the previous page
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&from_ms=1792840425357&limit=5&cursor=1792841780000:0x7b061dd26a62259ea989c24b8b65c1ef7afdef3482b52115b138c961c9db8be5"A market without a time in its slug. For any other market, set the end_date of /markets/{condition_id} against the resolved_ts_ms of
/settlements/{condition_id}. For will-donna-vekic-win-the-2026-womens-us-open the first is
1789257600000 (2026-09-13 00:00 UTC) and the second 1788412950000 (2026-09-03 05:22 UTC): it resolved, No,
ten days before its end date.
# the market's end date, epoch ms
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13"# the on-chain resolution of the same market
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/settlements/0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13"Before you rely on it
The slug holds the start, and from_ms filters the resolution
The number in a 5-minute slug is the window start, not its end, so add 300 seconds before you subtract.
from_ms and to_ms filter on resolved_ts_ms, not on the window, and rows come oldest resolution first.
end_date on other markets is the latest date the market can run, not when it resolves, so it can sit days
after the resolution. A market with no known slug never matches slug_prefix.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. The polymarket_settlement tool answers for one market at a time, at 1 credit a call.
How many seconds after its window closed did the Bitcoin Up or Down 7:10AM-7:15AM ET market of October 24 resolve on chain?