Snapshot history depth varies by source and plan. See Data availability and Tier access.
Unified snapshots
The live API is documented in OpenAPI 1.6.0. These pages mirror the public contract.
GET /v1/snapshots
Paginated order book snapshots across prediction markets and derivatives.
Credits: 50 base + 4 per row · 50 base + 10 per row when include_orderbook=true (Polymarket)
Tier (history depth): Free 7d · Pro 30d · Business full (per OpenAPI)
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
api-key | string | Yes | — | Your API key. Send via X-API-Key header (recommended) or api-key query. See Authentication. |
source | string | Yes | — | polymarket | kalshi | hyperliquid | binance (binance coming soon in API). |
symbol | string | Yes | — | Asset symbol: BTC, ETH, SOL, XRP. |
market_id | string | No | — | Narrow to one contract. Polymarket: condition_id (0x…) or slug. Kalshi: ticker (e.g. KXBTCD-25MAR27-T85999.99). |
include_orderbook | boolean | No | false | Full depth. Polymarket and Kalshi. |
include_diffs | boolean | No | false | Order book diffs. Kalshi only. |
depth | integer | No | 10 | Max levels per side. Polymarket only (1–50). |
interval | string | No | — | 5m, 15m, 1h, 4h, 24h, 500ms. |
start | string | No | — | ISO-8601 UTC start (inclusive). |
end | string | No | — | ISO-8601 UTC end (inclusive). |
limit | integer | No | 100 | Max rows (1–1000). |
after | string | No | — | Cursor from meta.next_cursor. |
Workflow: Use GET /v1/markets to discover market_id / slugs / tickers, then call /v1/snapshots with source, symbol, and optional market_id.
Per-platform shortcuts (same data, simpler paths) are listed on Platform routes.
Example
Send your API key in the X-API-Key header (recommended) or as the api-key query parameter.
import requests
resp = requests.get(
"https://kwery-api.com/v1/snapshots",
headers={"X-API-Key": "YOUR_KEY"},
params={
"source": "polymarket",
"symbol": "BTC",
"market_id": "btc-updown-5m-1773810900",
"interval": "5m",
"limit": 5,
},
)
data = resp.json()
print(data.get("data", [])[:2])Query parameter alternative: Add api-key=YOUR_KEY to the URL for quick tests.
GET /v1/snapshots/at
Single snapshot nearest to (at or before) a given time.
Credits: 50 flat
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
api-key | string | Yes | Same as above. |
source | string | Yes | polymarket | kalshi | hyperliquid | binance. |
symbol | string | Yes | BTC, ETH, SOL, XRP. |
time | string | Yes | ISO-8601 UTC target instant. |
market_id | string | No | Same semantics as list endpoint. |
include_orderbook | boolean | No | Polymarket / Kalshi. |
Example (header auth)
curl "https://kwery-api.com/v1/snapshots/at?source=polymarket&symbol=BTC&time=2026-03-05T14:30:00Z&market_id=btc-updown-5m-1773810900" \
-H "X-API-Key: YOUR_KEY"
import requests
resp = requests.get(
"https://kwery-api.com/v1/snapshots/at",
headers={"X-API-Key": "YOUR_KEY"},
params={
"source": "polymarket",
"symbol": "BTC",
"time": "2026-03-05T14:30:00Z",
"market_id": "btc-updown-5m-1773810900",
},
)
print(resp.json())
Errors
Common HTTP statuses: 400 validation, 401 auth, 402 plan/credits, 403 feature gated, 404 market not found, 429 rate limit, 501 Hyperliquid data not available for range. See Error codes and the OpenAPI spec for response schemas.