Kalshi Data API
One clean API for Kalshi depth: plain JSON over REST with a single Bearer key for history, and a live WebSocket stream for the present — both emitting the identical snapshot objects, so the code you backtest with reads the live feed unchanged.
The DepthFeed Kalshi data API serves order-book depth and price data as plain JSON over HTTPS. A metered REST API returns market discovery, metadata, and full-depth historical/latest snapshots with one Bearer key; a WebSocket stream pushes the same objects live. No SDK required — it drops into any stack, including function-calling and MCP-style agent tools.
Kalshi data API at a glance
- Protocol
- JSON over HTTPS — REST + WebSocket
- Auth
- Bearer / X-API-Key (or ?api_key= on WS)
- Discovery
- Markets → snapshots → live /v3/stream
- Agent-ready
- No SDK; MCP / function-calling friendly
- Assets
- 7 — BTC · ETH · SOL · XRP · DOGE · BNB · HYPE
- Timestamps
- Epoch-ms exchange + receive, per snapshot
- Underlying price
- Binance spot/futures, joined per snapshot
- History
- 7/30/90-day windows + full archive (Desk)
- Delivery
- REST API + live WebSocket, identical JSON
- Resolution
- Every change, or ?interval= 30s–1d downsample
What the API gives you
REST for history, WebSocket for live — one JSON shape
Discover markets, then pull full-depth snapshots for any market over the REST API. The live stream (wss://api.depthfeed.com/v3/stream) pushes the identical snapshot objects as books change, so the loader you write to replay history reads the live feed unchanged — backtest against the archive, then point the same code at the stream and trade.
Built for automation and agents
The API is plain JSON with one Bearer key (or X-API-Key), so it needs no SDK and drops straight into any function-calling or MCP-style tool definition. The WebSocket protocol is three JSON ops (subscribe / unsubscribe / ping), with ?api_key= auth where headers can't be set. Errors use a stable code enum you can branch on (AUTH_INVALID, COIN_NOT_IN_PLAN, RATE_LIMIT_BURST, …).
Metered, paginated, and tunable
Keyset (cursor) pagination and per-plan rate limits keep large pulls predictable, with X-RateLimit-* headers on every response. Choose your resolution: every recorded book change by default, or add ?interval= (30s–1d) to downsample server-side to one book per bucket. Full reference with copy-pasteable examples lives in the docs.
Start pulling kalshi data api
Free Explorer tier, no card. Full bid/ask depth and the underlying price on every snapshot, over a REST API and a live WebSocket stream.
Questions, answered.
No. It's plain JSON over HTTPS with a single Bearer key, so it works from any language with an HTTP client and drops into function-calling or MCP-style agent tools without a wrapper. The live WebSocket uses three simple JSON ops (subscribe / unsubscribe / ping), and ?api_key= auth covers clients that can't set headers.