Kalshi API
REST, WebSocket and FIX access to a CFTC-regulated event exchange.
by Kalshi
Last updated
What it is
The programmatic surface of a CFTC-regulated event exchange, and the most conventional API in this category — it reads like a futures venue rather than like a crypto protocol. REST at external-api.kalshi.com/trade-api/v2 covers series, events, markets, order books, trades and candlesticks on the public side, and orders, fills, positions, settlements and balances behind authentication. A WebSocket carries incremental order book updates, market tickers, public trades and your own fills. There is a FIX interface as well, with order entry, market data, drop-copy and RFQ messages, for firms that already speak it.
Two things set it apart from the on-chain APIs here. First, the account is a regulated relationship rather than a wallet: verified identity, then an RSA key pair generated in the account settings, then a signature on every request. Second, Kalshi documents its limits in numbers — the rate-limit page is a token-bucket table with per-tier budgets, which is a level of specificity nobody else in this category publishes.
There is a full demo environment on separate hosts with separate credentials, which makes this the one venue in the category where an integration can be rehearsed without live money.
Availability
Kalshi is a designated contract market, and the account is the gate. Identity verification happens at signup and, in Kalshi's own words, no trade can be placed until the digital verification process is complete; the exchange states plainly that it collects the information to comply with US law and CFTC regulations.
It is no longer US-only. Kalshi's help centre says trading from many countries outside the United States is possible, subject to the Member Agreement, and that some international jurisdictions remain restricted — the list lives in the representations and warranties section of that agreement rather than in the API docs. Country of residence is confirmed at signup.
Market data sits outside all of this. An unauthenticated REST call answers from anywhere, so a working data pipeline is not evidence that the same machine can place an order.
Pricing
The API costs nothing and there is no data plan. What costs money is the fill.
Kalshi's fee model is quadratic: the exchange's own series records expose fee_type and a fee_multiplier, and the worked example in its fee-rounding documentation prices a single contract at 5.5 cents at $0.00363825 — exactly 0.07 × price × (1 − price). That is the same shape as Polymarket's fee and the same peak at 50 cents, which makes the two roughly comparable at a given price. Makers are not charged under the default fee type, but some series use a maker-fee variant, and event-level overrides can layer on top of the series structure; both are readable through the fee-change endpoints rather than assumed.
Two rounding details are documented and easy to miss: fees are computed to six decimals and rounded up, and a rounding fee then pulls your balance back onto its precision grid, with accumulated overpayment rebated across the fills of one order. Settlement fees are zero for a plain yes/no determination.
The full fee schedule is a PDF on Kalshi's main site. It is linked from the help centre, and the site declined automated requests for it on 19 September 2026, so the arithmetic above comes from the documentation and the API rather than from that document.
Markets & resolution
Kalshi resolves its own markets, as the exchange, under the rules of each series — which is a materially different arrangement from an oracle vote, and the reason the contract terms matter. Each series record in the API carries a settlement_sources list with the name and URL of the source, links to the contract terms and the product certification filed with the CFTC, and any additional prohibitions on who may trade it (source-agency employees, holders of material non-public information).
Settlement itself is mechanical: the winning side pays one dollar per contract, netted, shortly after expiration, though the documentation is candid that timing varies with the market type, data availability and manual review. Where an initial publication is materially in error, some series hold expiration until a corrected release or fall back to a last fair price determined by the exchange — again, stated per series rather than globally.
Candlesticks come in 1-minute, 1-hour and 1-day periods, per market or batched, with a separate historical endpoint for markets that have already been archived.
Integrations
REST, WebSocket and FIX, with official Python and TypeScript SDKs. Request signing is an RSA signature over timestamp, method and path — with the query string stripped, which is the single most common implementation error. The host does not enter the signed payload, so the recommended and legacy hosts sign identically.
Operational details the docs get right: cursor pagination everywhere, a separate token bucket for reads and writes, batch endpoints that cost the sum of their items rather than a discount, an exchange-status endpoint, sharding with per-shard write budgets, subaccounts, and AWS PrivateLink for members at Premier tier and above.
Limitations
- The WebSocket is not public. Public channels still require an authenticated handshake, so there is no keyless live stream.
- 429 carries no
Retry-Afterand no rate-limit headers. You are expected to model the bucket yourself and back off. - Higher tiers are earned by volume, not bought. Advanced is a call away; everything above it is a share of exchange volume reviewed daily.
- Historical data is a second API. Anything past the cutoff moves to parallel endpoints, and the cutoff keeps advancing, so a backfill written against the live endpoints will quietly lose its tail.
- Batch orders are all-or-nothing against your bucket. A 25-order create needs its full 250 tokens on arrival or the whole batch is rejected.
- The fee schedule is a PDF behind a bot check, which makes the most load-bearing number on the venue the hardest thing to re-verify on a schedule.
Alternatives
For the same shape of data without an account or an identity check, the Polymarket Gamma API and the Polymarket CLOB API are the on-chain counterparts — no KYC, no US trading. The Limitless API is the smaller Base-native book with the same keyless read and an MCP server on top.
Specs
- Interfaces
- API, websocket, Python
- Export
- JSON
- Available in
- US, Global
- KYC required
- Yes
- Market subjects
- Politics, Sports, Macro, Crypto, Science, Culture
- Resolved by
- The exchange settles each market under the rules of its series, against the settlement source that series names — for the NYC temperature series, The Weather Company.
- Maker fee
- 0%
- Platforms
- Library
- AI features
- None
- Capabilities
- Order book, Automation, Live trading, Paper trading, Portfolio tracking
- Pricing verified
- Availability verified
- Markets verified
Also from Kalshi
Background
How this part of the sector works, rather than which product to pick.
- What an AI weather model gives you, and what it does not — The named models are public, cheap and openly licensed. What they output is a gridded value at fixed hours, which is not what a contract measures.
- Where weather data comes from and what you may do with it — Observations, model output and archives are three products with three licences. The forecast is the cheap half; a clean observation history is not.
- Why the same contract costs two different prices on two venues — Two venues quoting one outcome are quoting two contracts. What the gap between the prices is made of - rules, fallbacks, fees, collateral, exits, eligibility.
Also worth comparing
- Polymarket US API — A keyless public gateway for reading, and a signed key behind KYC for trading.
- Futuur API — One question, two order books — play money and real money, selected per request.
- Limitless API — REST and WebSocket for markets, books, candles and trading on Base.
- Manifold API — Every read is keyless, the server is MIT-licensed, and the currency is play money.
- Polymarket CLOB API — Order books, prices and order placement on Polymarket's matching engine.
- Polymarket Gamma API — Polymarket's read-only catalogue of events, markets, series and tags.
Named as a replacement for
FAQ
Can I read Kalshi market data without an account?
Yes, over REST. Series, events, markets and order books answer unauthenticated GETs — verified on 19 September 2026 against the production host. The WebSocket is different — the handshake itself returns 401 without signed headers, even for channels that only carry public data.
What are the Kalshi API rate limits?
A token bucket per account tier. Most endpoints cost 10 tokens; the entry Basic tier refills 200 read tokens and 100 write tokens per second, and tiers run up to 10,000 read tokens per second. Divide budget by cost for your sustained rate, and read your live figures from the account limits endpoint.
How far back does Kalshi market data go through the API?
Live endpoints stop at a moving cutoff. Markets, candlesticks, trades, orders and positions older than their cutoff timestamp move to a parallel set of historical endpoints, and the cutoff advances over time. Query the cutoff endpoint rather than assuming a fixed window.
Does using the Kalshi API require identity verification?
Yes, because the key belongs to an exchange account. Kalshi verifies identity at signup to comply with CFTC rules, and no trade may be placed before that is complete. The API key itself is an RSA key pair generated inside an already-verified account.