Skip to main content
⚠️Data availability

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

ParameterTypeRequiredDefaultDescription
api-keystringYesYour API key. Send via X-API-Key header (recommended) or api-key query. See Authentication.
sourcestringYespolymarket | kalshi | hyperliquid | binance (binance coming soon in API).
symbolstringYesAsset symbol: BTC, ETH, SOL, XRP.
market_idstringNoNarrow to one contract. Polymarket: condition_id (0x…) or slug. Kalshi: ticker (e.g. KXBTCD-25MAR27-T85999.99).
include_orderbookbooleanNofalseFull depth. Polymarket and Kalshi.
include_diffsbooleanNofalseOrder book diffs. Kalshi only.
depthintegerNo10Max levels per side. Polymarket only (1–50).
intervalstringNo5m, 15m, 1h, 4h, 24h, 500ms.
startstringNoISO-8601 UTC start (inclusive).
endstringNoISO-8601 UTC end (inclusive).
limitintegerNo100Max rows (1–1000).
afterstringNoCursor 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

ParameterTypeRequiredDescription
api-keystringYesSame as above.
sourcestringYespolymarket | kalshi | hyperliquid | binance.
symbolstringYesBTC, ETH, SOL, XRP.
timestringYesISO-8601 UTC target instant.
market_idstringNoSame semantics as list endpoint.
include_orderbookbooleanNoPolymarket / 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.