/orderbook
An order-book snapshot for one outcome token, taken from the nearest recorded snapshot at or before ts. Rows can repeat per (side, level) — de-duplicate before summing size.
GET https://data.vike.io/v1/polymarket/orderbook?token_id={token_id}An order-book snapshot for one outcome token, taken from the nearest recorded book snapshot
at or before ts — the latest one if ts is omitted. Rows carry as_of_ts, side, level,
price and size, with level numbering outward from the touch, starting at 1 on each side.
Truncated for the page: 25 rows were returned, levels 1 through 25; the first three are shown.
Three things in this capture are worth more than the row shape:
as_of_ts was two weeks stale. No ts was passed, so this is "the latest snapshot" — and the
latest is 1787183491190, 2026-08-19T23:51:31Z, for a call made on 2026-09-03. That is the
as_of_ts note below made concrete: the endpoint answered 200 with a perfectly well-formed book that
was a fortnight old, and nothing but as_of_ts said so.
This response has no duplication at all — 25 rows, 25 distinct (side, level) pairs. That is
the factor-1 case the warning below describes. Do not read it as evidence the duplication is
fixed; de-duplicate anyway, because the factor is per-token and moves day to day.
Every one of the 25 rows is a bid — there is no ask row in the response
Every one of the captured rows has side bid. depth is applied per
side — the query keeps level <= depth on each — so it is not what kept the asks out: that
snapshot simply held no ask rows. How the sides are ordered, and why one can be absent, is on Polymarket data model.
# the latest recorded book snapshot of one outcome token; read as_of_ts, because the latest recorded snapshot can be old
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=95532524407959903145510583684979049735028502452973932716346555811355282494630"
# just the touch and four levels behind it: depth counts levels per side, so a two-sided book gives five bids and five asks (before any repeats, see the end)
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=95532524407959903145510583684979049735028502452973932716346555811355282494630&depth=5"
# the book as of a moment you name, in epoch milliseconds: the nearest snapshot at or before ts, and as_of_ts says which one that was
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=95532524407959903145510583684979049735028502452973932716346555811355282494630&ts=1787180000000"
# an hour earlier, to see how the book moved; each step back is one call, so for book history in bulk use the archive instead
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=95532524407959903145510583684979049735028502452973932716346555811355282494630&ts=1787176400000"
# a ts before the token's tape began is 200 with [], with no as_of_ts to read
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=95532524407959903145510583684979049735028502452973932716346555811355282494630&ts=1784900000000"
# the other outcome token has its own book
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=107869950127184141743772429738701578723770582686430100389837827512148691029625&depth=5"
# read it the way the page says: repeats are not extra depth, so keep one row per (side, level) before summing size
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/orderbook?token_id=95532524407959903145510583684979049735028502452973932716346555811355282494630&depth=5" | jq 'unique_by([.side, .level])'token_idqueryrequiredtsqueryoptionaldepthqueryoptional25, hard cap 25.[
{
"as_of_ts": 1787183491190,
"level": 1,
"price": 0.999,
"side": "bid",
"size": 303284.22
},
{
"as_of_ts": 1787183491190,
"level": 2,
"price": 0.991,
"side": "bid",
"size": 10077
},
{
"as_of_ts": 1787183491190,
"level": 3,
"price": 0.99,
"side": "bid",
"size": 20105
}
]as_of_ts is the snapshot's own timestamp, not the ts you asked for; Freshness says why to read it. A book shallower than depth
returns fewer levels; that is the real depth, not truncation.
The same (side, level) can arrive several times, so de-duplicate before summing size: Polymarket data model.
For book history rather than a snapshot, use the bulk archive — it carries every book event, and it is far cheaper than replaying snapshots through this endpoint.
/ohlcv
Candles for one outcome token, priced in probability 0–1 — a different endpoint and a different store from the Hyperliquid price candles at /v1/hyperliquid/ohlcv.
/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.