vike

Recipe 24 of 30

Walk every settled 5-minute BTC market in one script

Call /settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000 and pass each page's next_cursor back as cursor until has_more is false; about 17 pages hold every settled 5-minute BTC market since 2026-01-01.

GET /v1/polymarket/settlements/bulk returns on-chain settlements oldest first, 5,000 to a page. With slug_prefix=btc-updown-5m- it keeps only the 5-minute BTC markets, so the whole family since 2026-01-01, about 80,000 markets in October 2026, is about 17 requests. Your script repeats one call: send the next_cursor of the page you got as cursor, and stop when has_more is false. The full parameter list is on Settlements in bulk.

Quick answer

Page 1 of the walk is the family's prefix and a full page.

cURL
# page 1 of the walk: settled 5-minute BTC markets, oldest first
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000"

Example response

Captured from the live API on 2026-10-24 at 17:22 UTC, with limit=3, so the page is short; at limit=5000 the same three rows open it. The walk starts at the oldest settlement held for the family, on 2026-01-01 UTC. next_cursor is the last row's resolved_ts_ms and condition_id; the slug ends in the window's start in unix seconds, and the question gives the same window in US Eastern time.

Example response
{
  "settlements": [
    {
      "condition_id": "0x80412eea753511e2b99b34ac7278f583aa633755d4bfc37937747fcccdc67f0e",
      "market_known": true,
      "outcomes": ["Up", "Down"],
      "payouts": [0, 1],
      "question": "Bitcoin Up or Down - December 31, 6:50PM-6:55PM ET",
      "resolved_block": 81053182,
      "resolved_ts_ms": 1767225623000,
      "slug": "btc-updown-5m-1767225000",
      "token_ids": ["49699554833940749458928669349813611676670305272267507372557451546278237252538", "19759251783825530137716888916762539198265502090004595143306471486961806482242"],
      "winning_index": 1,
      "winning_outcome": "Down",
      "winning_token_id": "19759251783825530137716888916762539198265502090004595143306471486961806482242"
    },
    {
      "condition_id": "0xede6e8b8607bb696c8a00ec97d533627b77d24cdcdccf975e73c8bd335e58dde",
      "market_known": true,
      "outcomes": ["Up", "Down"],
      "payouts": [0, 1],
      "question": "Bitcoin Up or Down - December 31, 6:55PM-7:00PM ET",
      "resolved_block": 81053332,
      "resolved_ts_ms": 1767225923000,
      "slug": "btc-updown-5m-1767225300",
      "token_ids": ["34209375106341580939215019589058068862016127871850763169711591623910323095964", "80563135438080242905670806421086382445147359363946991388909382061983976597905"],
      "winning_index": 1,
      "winning_outcome": "Down",
      "winning_token_id": "80563135438080242905670806421086382445147359363946991388909382061983976597905"
    },
    {
      "condition_id": "0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b",
      "market_known": true,
      "outcomes": ["Up", "Down"],
      "payouts": [1, 0],
      "question": "Bitcoin Up or Down - December 31, 7:00PM-7:05PM ET",
      "resolved_block": 81053481,
      "resolved_ts_ms": 1767226221000,
      "slug": "btc-updown-5m-1767225600",
      "token_ids": ["52800386473038685436634102474246213229162588697536342875118830235865966592259", "1461468263662476251379250668837619567224920549786162744272849437633814478818"],
      "winning_index": 0,
      "winning_outcome": "Up",
      "winning_token_id": "52800386473038685436634102474246213229162588697536342875118830235865966592259"
    }
  ],
  "has_more": true,
  "next_cursor": "1767226221000:0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b"
}

Variations

The next page. Same call plus cursor. Repeat until has_more is false; on the last page next_cursor is null.

cURL — next page
# page 2 of the captured walk
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=3&cursor=1767226221000:0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b"

It returned the next three markets, 7:05PM to 7:20PM ET, in order.

One line per market.

cURL — compact
# slug, winner and resolution time of each market on the page
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000" \
  | jq -c '.settlements[] | [.slug, .winning_outcome, .resolved_ts_ms]'

Another family. The prefix is <coin>-updown-<tenor>-: eth-updown-15m-, btc-updown-4h- and so on.

cURL — 15-minute ETH
# page 1 of every settled 15-minute ETH market
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=eth-updown-15m-&limit=5000"

Pick up only what is new. The last page has no cursor. Keep the last row you stored and pass its resolved_ts_ms:condition_id as cursor tomorrow: the walk resumes strictly after it.

cURL — resume
# everything settled after the last market you hold
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/settlements/bulk?slug_prefix=btc-updown-5m-&limit=5000&cursor=1792765880000:0x8c1824d3201d570703ff6a9ac47374327f53b873665abc3f68998704b96bec51"

Before you rely on it

A prefix only finds markets with a known slug

slug_prefix matches the market's slug, and a settlement with market_known false has none, so it never matches. Markets the chain never resolved, such as cancelled ones, are not listed at all. Each page takes a few seconds whatever its size, so ask for full pages; every page counts as one request against your limits.

Ask your agent

Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. No MCP tool lists settlements in bulk. The polymarket_settlement tool answers for one market at a time, at 1 credit a call.

Ask your agent
How did the Polymarket market 0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b resolve?
Example response
{  "settlements": [    {      "condition_id": "0x80412eea753511e2b99b34ac7278f583aa633755d4bfc37937747fcccdc67f0e",      "market_known": true,      "outcomes": ["Up", "Down"],      "payouts": [0, 1],      "question": "Bitcoin Up or Down - December 31, 6:50PM-6:55PM ET",      "resolved_block": 81053182,      "resolved_ts_ms": 1767225623000,      "slug": "btc-updown-5m-1767225000",      "token_ids": ["49699554833940749458928669349813611676670305272267507372557451546278237252538", "19759251783825530137716888916762539198265502090004595143306471486961806482242"],      "winning_index": 1,      "winning_outcome": "Down",      "winning_token_id": "19759251783825530137716888916762539198265502090004595143306471486961806482242"    },    {      "condition_id": "0xede6e8b8607bb696c8a00ec97d533627b77d24cdcdccf975e73c8bd335e58dde",      "market_known": true,      "outcomes": ["Up", "Down"],      "payouts": [0, 1],      "question": "Bitcoin Up or Down - December 31, 6:55PM-7:00PM ET",      "resolved_block": 81053332,      "resolved_ts_ms": 1767225923000,      "slug": "btc-updown-5m-1767225300",      "token_ids": ["34209375106341580939215019589058068862016127871850763169711591623910323095964", "80563135438080242905670806421086382445147359363946991388909382061983976597905"],      "winning_index": 1,      "winning_outcome": "Down",      "winning_token_id": "80563135438080242905670806421086382445147359363946991388909382061983976597905"    },    {      "condition_id": "0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b",      "market_known": true,      "outcomes": ["Up", "Down"],      "payouts": [1, 0],      "question": "Bitcoin Up or Down - December 31, 7:00PM-7:05PM ET",      "resolved_block": 81053481,      "resolved_ts_ms": 1767226221000,      "slug": "btc-updown-5m-1767225600",      "token_ids": ["52800386473038685436634102474246213229162588697536342875118830235865966592259", "1461468263662476251379250668837619567224920549786162744272849437633814478818"],      "winning_index": 0,      "winning_outcome": "Up",      "winning_token_id": "52800386473038685436634102474246213229162588697536342875118830235865966592259"    }  ],  "has_more": true,  "next_cursor": "1767226221000:0x317e2f8941aac42f211ba94384e05b76e10eed874674d70719583fef7571d07b"}