Base URL
All API requests are made to:GET /polymarket/market/data,GET /polymarket/market/data/range,GET /polymarket/market/orderbook-summary,GET /polymarket/market/list, andGET /polymarket/market/date-rangefor PolymarketGET /kalshi/market/data,GET /kalshi/market/data/range,GET /kalshi/market/orderbook-summary,GET /kalshi/market/list, andGET /kalshi/market/date-rangefor KalshiGET /lookup/slugfor resolving a Polymarket slug into one or more condition IDsGET /healthfor an unauthenticated service health check
GET /market/dataas an alias ofGET /polymarket/market/dataGET /market/data/rangeas an alias ofGET /polymarket/market/data/rangeGET /market/orderbook-summaryas an alias ofGET /polymarket/market/orderbook-summaryGET /polymarket/lookup/slugas an alias ofGET /lookup/slug
Preferred clients
Use the official SDK or CLI for most integrations. They handle base URL conventions, auth headers, and common parameter patterns for you.Authentication
Historical market endpoints require API key authentication via a Bearer token in theAuthorization header:
GET /healthdoes not require authenticationGET /lookup/slugdoes not require authentication- API key management endpoints under
/keysdo not use Bearer auth; they use the documenteduser_idandkey_idparameters instead
Request format
- All requests use standard query parameters or path parameters.
- All responses return JSON.
- Dates are formatted as
YYYY-MM-DDand interpreted in UTC. - Polymarket
condition_idvalues are accepted with or without the0xprefix and are normalized in responses. - Kalshi
tickerandprefixvalues are normalized to uppercase. - Range endpoints accept Unix seconds or milliseconds and use inclusive
start_timestampandend_timestampbounds. - Date-scoped endpoints use offset pagination and return
offset,limit,total_count, andhas_more. - Range endpoints use cursor pagination and return
limit,has_more, andnext_cursor.
Availability and coverage
Storage coverage is market-specific. The most reliable way to discover availability is to call the corresponding date-range endpoint first.- Orderbook data exists for a subset of markets from 2025-09-01 on Polymarket and 2026-02-17 for Kalshi, but coverage is not continuous.
- Continuous Polymarket crypto-related market coverage begins on 2026-02-04. Continuous Kalshi crypto-related market coverage begins on 2026-02-25.
- Continuous coverage for all markets begins 2026-04-02 for Polymarket and 2026-03-31 for Kalshi.
GET /polymarket/market/date-rangetells you which Polymarket UTC dates are present for a condition ID.GET /kalshi/market/date-rangetells you which Kalshi UTC dates are present for a ticker.GET /polymarket/market/datacurrently rejects dates earlier than2026-02-08, even if older backfilled Polymarket dates exist in storage for some markets.
Rate limits
Billable historical market endpoints may return429 Too Many Requests when a plan usage limit is reached. See Error Responses for the actual payload shape.