One market
One market's detail — the same row shape as the directory, for a single market you already hold a condition_id for.
GET https://data.vike.io/v1/polymarket/markets/{condition_id}One market's detail — the same row shape as the directory, for a single market. Call it when you
already hold a condition_id (from a Polymarket URL, a settlement row, or a stored id) and want
its token_ids, tick size and lifecycle flags without searching.
Note the shape: a one-element array, not a bare object. Even for a single market you index
[0]. It is the same row the directory returns, plus source, which is why an unknown id is an
empty array rather than a 404 — see the callout below.
Markets outside the recorded universe are answered too. The directory lists the markets Vike
records; a market it does not hold (most resolved markets, including nearly every settled 5-minute
Up/Down market) is looked up in Polymarket's full market catalog instead. source says which list
answered: "recorded" (the directory) or "catalog". A catalog row carries the same condition_id,
slug, token_ids and end_date, and active/closed derived by the same rule (an on-chain
resolution or Polymarket's own closed flag). The catalog has no tick size and no neg-risk flag, so a
catalog row returns tick_size and neg_risk as null, never a guessed value. An end_date of 0
means the market has no end date on record, in either list. Only an id that neither list knows
returns [].
# one market you already hold a condition_id for: its token_ids, tick size and lifecycle flags, no search needed
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x7b9072e6a9cdcf022c4f098564e8ee612d544e179e4a33dcc2790fbaa778daa8"
# a sibling market from the same /markets?query=bitcoin search, to compare neg_risk, tick_size and end_date
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x84fdc3f917e34acca874f93d978e84ed0c08969903ddf40a5d65274b3a5b4fdf"
# read tick_size per market rather than assuming it: this one steps in 0.01 where the two above step in 0.001
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x752fa61c93f16c4b15e85b0bd438d9c684176b0ea7b319a84c8aca34616e8a8c"
# a market that has resolved on chain: its closed flag here is derived from that resolution, so read it beside /settlements
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x69e0442186b71c5cac4fa6304311e39101ed048983a200fc8e376a9dadd7de13"
# just the token_ids, ready to feed /ohlcv, /orderbook, /market_stats or /events
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x7b9072e6a9cdcf022c4f098564e8ee612d544e179e4a33dcc2790fbaa778daa8" | jq '.[0].token_ids'
# an id neither the directory nor the catalog knows is 200 with [], not a 404, so test the length rather than the status
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x0000000000000000000000000000000000000000000000000000000000000000" | jq lengthcondition_idpathrequired0x-prefixed market condition id.[
{
"active": 0,
"closed": 1,
"condition_id": "0x7b9072e6a9cdcf022c4f098564e8ee612d544e179e4a33dcc2790fbaa778daa8",
"end_date": 1798779600000,
"neg_risk": 1,
"slug": "will-bitcoin-reach-70000-by-december-31-2026-from-june-8",
"source": "recorded",
"tick_size": 0.001,
"token_ids": [
"95532524407959903145510583684979049735028502452973932716346555811355282494630",
"107869950127184141743772429738701578723770582686430100389837827512148691029625"
]
}
]A market the directory does not hold comes from the catalog. This is the real row for
0x80412eea…7f0e, a settled 5-minute Bitcoin Up/Down market: no tick size or neg-risk flag on
record, so both are null:
[
{
"active": 0,
"closed": 1,
"condition_id": "0x80412eea753511e2b99b34ac7278f583aa633755d4bfc37937747fcccdc67f0e",
"end_date": 1767225300000,
"neg_risk": null,
"slug": "btc-updown-5m-1767225000",
"source": "catalog",
"tick_size": null,
"token_ids": [
"49699554833940749458928669349813611676670305272267507372557451546278237252538",
"19759251783825530137716888916762539198265502090004595143306471486961806482242"
]
}
]The path segment is matched as a condition_id only
The route looks a market up by condition_id and
by nothing else, so a token_id in this position returns [] with status 200. Any value that is
not 0x and 64 hex digits, a token id included, gets that [] with an X-Vike-Note: condition_id is 0x followed by 64 hex digits; this value is not one header; a well-formed id that neither list knows
gets [] with no header. There is no
query-parameter form either: the route accepts no query parameters at all, and ?token_id= on this
path is refused with 400 {"error":"unknown query parameter 'token_id' (this endpoint accepts: none)"}.
There is no token-to-market lookup in this namespace, so keep the condition_id from the
/markets row you took the token from.
Markets
The market directory — search and filter the recorded market universe by slug. The entry point: almost every other Polymarket endpoint needs an id that only this one hands out.
Trader profile
One Polymarket trader's profile — lifetime volume, realized P&L and hit rate over a window, markets, recent trades, open positions and an equity curve.