Guide
Kalshi API: how to get real-time Kalshi data
20 June 2026 · 6 min read
If you want live Kalshi data — prices, order-book depth, market movers, or event contract flow — you have two paths: Kalshi's own APIs, or a layer that normalises and enriches them for you. This guide covers both honestly, so you can pick the right one for your use case.
Does Kalshi have an API?
Yes — Kalshi is a US, CFTC-regulated prediction-market exchange and it provides a documented API. There are two interfaces you'll use:
- REST API — markets, events, prices, order management, and trade history. Covers everything you need to read the book or place orders.
- WebSocket API — real-time streaming of market prices and order-book updates. This is where live data comes from.
Both require authentication. You authenticate with an API key, and requests are signed — so there's a bit more setup than a purely open API. If you just need to read a market or place a trade, go straight to Kalshi's own API and documentation — you don't need anything else for that.
What's actually hard?
The API itself is the easy part. The harder work shows up when you try to turn raw data into something useful in production:
- Auth and signing — Kalshi's request authentication adds a step beyond a simple bearer token. Getting the signing logic right and keeping credentials secure takes a bit of plumbing before you can write a single useful query.
- Real-time plumbing — the WebSocket needs reconnect logic, heartbeat handling, and message parsing before it's reliable enough to depend on.
- Signals — "a large order just hit," "this market is moving fast," "this price looks mispriced relative to Polymarket" aren't endpoints. You derive those from the raw stream, and tuning them is its own project.
- Resolution truth — Kalshi is not on-chain, so there's no public ledger to anchor resolution against. Getting trustworthy labels for settled markets — especially for backtesting — requires careful sourcing. Scraped "resolved" fields can drift.
- Cross-platform — the moment you also want Polymarket, you're maintaining a second differently-shaped pipeline and reconciling the two schemas.
Reading Kalshi data directly (the quick version)
Once you have an API key, a basic authenticated REST call looks like this (exact endpoint paths may vary — check Kalshi's current documentation):
# Illustrative only — Kalshi authenticates with signed requests
# (an API key + a request signature), not a simple bearer token.
# See Kalshi's API docs for the exact signing scheme and endpoints.
GET https://trading-api.kalshi.com/trade-api/v2/markets?limit=5
That works fine for a script or a one-off read. It stops being the right approach when you need live streaming, normalised signals, and reliable resolution labels — which is where most serious builders end up.
The shortcut: a normalised intelligence layer
Idmon sits on top of the raw markets and gives you the part you'd otherwise build: normalised real-time signals (whale flow, movers, mispricing), calibrated resolution labels, and one schema across Kalshi and Polymarket — delivered by REST, WebSocket, or signed webhooks.
Because Kalshi is an off-exchange venue and not on-chain, Idmon's resolution labels for Kalshi markets are calibrated from multiple sources rather than anchored to a public ledger. You get the same trustworthy label format as for Polymarket, without building that sourcing yourself.
# recent signals across Kalshi and Polymarket, one authenticated call
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.idmon.io/api/alerts/recent?limit=20"
There are code examples in curl, Python, and Node, and the full API docs cover the WebSocket and webhook-signature details.
Which should you use?
| If you… | Use |
|---|---|
| Need to read a Kalshi market or place an order | Kalshi's own REST API directly |
| Want live signals without building ingestion or auth plumbing | Idmon (REST / WebSocket) |
| Want events pushed into Discord or your app | Idmon (signed webhooks) |
| Need calibrated resolution + Kalshi and Polymarket in one schema | Idmon |
There's no shame in starting with Kalshi's API directly — many builds do. You reach for a layer like Idmon when the auth setup, ingestion, signal derivation, and resolution work starts costing you more time than the data itself.
Try it free, no signup. Idmon's /public/* endpoints serve most of the data at 60 requests/min with no key — see the docs. When you want real-time push, headroom, calibrated resolution, and a commercial licence, request a key and you'll be live within a business day.
FAQ
Does Kalshi have an API?
Yes — Kalshi provides a REST API and a WebSocket API. Both require authentication with an API key. They're the right choice for reading markets or placing orders directly on the exchange, but they're lower-level: you build and maintain the pipeline, and they don't provide normalised signals or calibrated resolution labels.
How do I get real-time Kalshi market data?
Kalshi's WebSocket API streams live prices and order-book updates. You'll need to authenticate, manage reconnects, and parse the message format yourself. Alternatively, Idmon delivers normalised real-time signals across Kalshi and Polymarket by REST, WebSocket, or signed webhooks — without the plumbing work.
Is the Kalshi API free to use?
Kalshi's API is available to registered users and does not charge per call, though you must agree to their terms and authenticate. Idmon adds free public endpoints (60 requests/min, no signup) plus paid tiers for real-time push, higher limits, calibrated resolution, and a commercial licence.
Can I get Kalshi data alongside Polymarket data in one feed?
Not from either exchange directly — they use different schemas, auth systems, and message formats. Idmon normalises both into one schema and delivers them together by REST, WebSocket, or signed webhooks, so you don't have to maintain two separate pipelines.
Related: Polymarket API guide · Webhooks vs REST vs WebSocket · API documentation · Idmon overview