GET/kalshi/event/{event_ticker}apiKey2 credits/request
Returns one Kalshi event by `event_ticker` (such as `KXELONMARS-99`) together with its markets. The event has its series ticker, title, subtitle, category, strike period and mutually-exclusive flag; each market has prices, bid and ask, volume, open interest, status and rules. An unknown ticker returns a not-found error.
Required: event_ticker.
Sampled 14 Oct 2026: 1 item. Filled in every item: ticker, event_ticker, title, sub_title, status, market_type, open_time, close_time and 11 more. In the sample: open_time: 2025-08-28; ticker: “KXELONMARS-99”; rules_primary: median 105 characters; event_ticker: “KXELONMARS-99”; title: “Will Elon Musk visit Mars before Aug 1, 2099?”; sub_title: “Mars”; status: “active”; market_type: “binary”.
Open in Playground
GET/kalshi/event/{event_ticker}/historyapiKey2 credits/request
Returns candlesticks for the markets in a Kalshi event, grouped by market, for `event_ticker`. `start_ts` defaults to 7 days ago, `end_ts` to now, `period_interval` to 1440 minutes, and `series_ticker` to the ticker prefix before the last dash. Each candle has price, yes bid and ask, volume and open interest. Ranges are capped at 366 days.
Required: event_ticker. Optional: series_ticker, start_ts, end_ts, period_interval, include_latest_before_start.
Sampled 14 Oct 2026: 1 item. Filled in every item: ticker, series_ticker, start_ts, end_ts, period_interval, source_url, fetched_at. Not in every item: candlesticks (0). In the sample: start_ts: 2024-01-01; ticker: “KXELONMARS-99”; source_url: external-api.kalshi.com; series_ticker: “KXELONMARS”; end_ts: 2024-01-02; fetched_at: 2026-10-13.
Open in Playground
GET/kalshi/event/{event_ticker}/metadataapiKey2 credits/request
Returns the media and market metadata for one Kalshi event by `event_ticker`. The response has the event image and featured image, a color code and image for each market, settlement sources with name and URL, and competition context when it applies. An unknown ticker returns a not-found error.
Required: event_ticker.
Sampled 14 Oct 2026: 17 items. Filled in every item: name, url. In the sample: url: theguardian.com and 12 other hosts; name: median 15 characters.
Open in Playground
GET/kalshi/eventsapiKey2 credits/request
Lists Kalshi events, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by `series_ticker`, `category`, `status` (`open`, `closed` or `settled`), `min_close_ts` and `min_updated_ts`. `with_nested_markets` adds each event's markets. Each event has its ticker, title, category and strike period. A `cursor` is returned when more rows exist.
Optional: limit, cursor, series_ticker, category, status (3 allowed values: open, closed, settled), with_nested_markets, with_milestones, min_close_ts, min_updated_ts.
Sampled 14 Oct 2026: 20 items. Filled in every item: event_ticker, series_ticker, title, sub_title, category, last_updated. Not in every item: mutually_exclusive (10), collateral_return_type (10), strike_period (1). In the sample: last_updated: 2026-08-27 to 2026-10-09; category: Elections (7), Politics (4), Science and Technology (3) and 3 more; event_ticker: “KXELONMARS-99” and 19 other values; mutually_exclusive: true in 10 of 10; series_ticker: “KXELONMARS” and 18 other values; title: “Will Elon Musk visit Mars in his lifetime?” and 19 other values; sub_title: “Before 2099” and 11 other values; strike_period: “custom”.
Open in Playground
GET/kalshi/events/multivariateapiKey2 credits/request
Lists Kalshi multivariate events, which the regular events list leaves out, up to `limit` rows (default 25, max 200), continued with `cursor`. Each event has its ticker, series ticker, title, subtitle, category and markets. A `cursor` is returned when more rows exist.
Optional: limit, cursor.
Sampled 14 Oct 2026: 20 items. Filled in every item: event_ticker, series_ticker, title, sub_title, category. In the sample: title: Which party will win the U.S. H… (15), Arizona Governor winner? (2), Which party will win the U.S. S… (2) and 1 more; event_ticker: “KXMVECROSSCATEGORY-S2026FFFC34AFC93” and 19 other values.
Open in Playground
GET/kalshi/exchange/scheduleapiKey1 credit/request
Returns the Kalshi exchange schedule, with no inputs. `standard_hours` are date-bounded blocks listing `open_time` and `close_time` for each weekday, and `maintenance_windows` list start time, end time and reason. The maintenance list can be empty. Informational only.
Takes no parameters.
Sampled 14 Oct 2026: 1 item. Filled in every item: start_time, end_time, monday, tuesday, wednesday, thursday, friday, saturday and 1 more. In the sample: start_time: 2024-12-01; monday: median 1 entry; end_time: 2200-12-01; tuesday: median 1 entry; wednesday: median 1 entry; thursday: median 2 entries; friday: median 1 entry; saturday: median 1 entry.
Open in Playground
GET/kalshi/exchange/statusapiKey1 credit/request
Returns the current Kalshi exchange status, with no inputs: `exchange_active` says whether the exchange is up, and `trading_active` says whether trading is open at the time of the request. Informational only, not real-time trading data.
Takes no parameters.
Sampled 14 Oct 2026: 2 fields returned with a value. In the sample: exchange_active: true; trading_active: true.
Open in Playground
GET/kalshi/historical/cutoffapiKey1 credit/request
Returns the three cutoff timestamps Kalshi uses to split live from historical data: `market_settled_at`, `orders_updated_at` and `trades_created_at`. Use them to decide when settled market data should be read from the historical endpoints. Takes no parameters.
Takes no parameters.
Sampled 14 Oct 2026: 3 fields returned with a value. In the sample: market_settled_at: 2026-08-14; orders_updated_at: 2026-09-29; trades_created_at: 2026-08-14.
Open in Playground
GET/kalshi/historical/market/{ticker}apiKey2 credits/request
Returns one settled Kalshi market from historical storage by `ticker`. The response has the title, subtitle, event ticker, status, result, open, close and expiration times, last and previous price, yes and no bid and ask, volume, open interest, liquidity and primary rules text. Invalid tickers are rejected.
Required: ticker.
Sampled 14 Oct 2026: 20 fields returned with a value. In the sample: market.open_time: 2026-01-01; market.last_price: 0.99; market.ticker: “KXEPLGAME-26JAN17MUNMCI-MUN”; market.rules_primary: 246 characters; market.event_ticker: “KXEPLGAME-26JAN17MUNMCI”; market.title: “Manchester United vs Manchester City Winner?”; market.sub_title: “Manchester United”; market.status: “finalized”.
Open in Playground
GET/kalshi/historical/market/{ticker}/historyapiKey2 credits/request
Returns candlesticks for one settled Kalshi market by `ticker`. `start_ts` defaults to 7 days ago, `end_ts` to now and `period_interval` to 1440 minutes. Each candle has end time, price, yes bid and ask, volume and open interest. Ranges are capped at 366 days.
Required: ticker. Optional: start_ts, end_ts, period_interval.
Sampled 14 Oct 2026: 16 items. Filled in every item: end_period_ts, end_period_at, open_interest, volume, price, yes_ask, yes_bid. In the sample: end_period_ts: 2026-01-02 to 2026-01-17; open_interest: 12 to 54,954, median 17,014; end_period_at: 2026-01-02 to 2026-01-17; volume: 0 to 32,808, median 1,977.
Open in Playground
GET/kalshi/historical/marketsapiKey2 credits/request
Returns settled Kalshi historical market rows. `tickers`, `event_ticker`, and `series_ticker` are mutually exclusive. The `mve_filter` enum accepts `exclude`.
Optional: limit, cursor, tickers, event_ticker, series_ticker, mve_filter (exclude).
Sampled 14 Oct 2026: 20 items. Filled in every item: ticker, event_ticker, title, sub_title, status, market_type, open_time, close_time and 11 more. In the sample: open_time: 2026-08-13; result: no (16), yes (4); last_price: 0 to 1, median 0.02; ticker: “KXMVECROSSCATEGORY-SHARD1-S20260F85A417E0F-1DE4C7D4E5C” and 19 other values; event_ticker: “KXMVECROSSCATEGORY-SHARD1-S20260F85A417E0F” and 16 other values; title: “yes Marton Fucsovics,yes Ariel Frutos Alonso / Santino Nune…” and 19 other values; sub_title: “yes Marton Fucsovics,yes Ariel Frutos Alonso / Santino Nune…” and 19 other values; close_time: 2026-08-13.
Open in Playground
GET/kalshi/historical/tradesapiKey2 credits/request
Lists older Kalshi trades that have moved into historical storage, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by market `ticker` and by created time with `min_ts` and `max_ts` (Unix seconds). Each trade has its id, count, yes and no price, taker side and created time.
Optional: limit, cursor, ticker, min_ts, max_ts.
Sampled 14 Oct 2026: 20 items. Filled in every item: trade_id, ticker, created_time, created_ts, count, yes_price, no_price, taker_side and 2 more. In the sample: created_time: 2026-08-05 to 2026-08-13; taker_side: no (15), yes (5); count: 1 to 121.62, median 1.08; created_ts: 2026-08-05 to 2026-08-13; yes_price: 0.09 to 0.11, median 0.1; no_price: 0.89 to 0.91, median 0.9; taker_outcome_side: no (15), yes (5); taker_book_side: ask (15), bid (5).
Open in Playground
GET/kalshi/market/{ticker}apiKey2 credits/request
Returns one Kalshi market by `ticker` (such as `KXELONMARS-99`). The response has the title, subtitle, event ticker, status, result, open, close and expiration times, last and previous price, yes and no bid and ask, volume, 24-hour volume, open interest, liquidity and rules text. An unknown ticker returns a not-found error.
Required: ticker.
Sampled 14 Oct 2026: 19 fields returned with a value. In the sample: market.open_time: 2025-08-28; market.last_price: 0.09; market.ticker: “KXELONMARS-99”; market.rules_primary: 105 characters; market.event_ticker: “KXELONMARS-99”; market.title: “Will Elon Musk visit Mars before Aug 1, 2099?”; market.sub_title: “Mars”; market.status: “active”.
Open in Playground
GET/kalshi/market/{ticker}/historyapiKey2 credits/request
Returns candlesticks for one Kalshi market by `ticker`. `series_ticker` defaults to the ticker prefix before the last dash, `start_ts` to 7 days ago, `end_ts` to now and `period_interval` to 1440 minutes. `include_latest_before_start` adds the last candle before the start. Ranges are capped at 366 days.
Required: ticker. Optional: series_ticker, start_ts, end_ts, period_interval, include_latest_before_start.
Sampled 14 Oct 2026: 5 fields returned with a value, 1 empty (candlesticks). In the sample: start_ts: 2024-01-01; period_interval: 1,440; ticker: “KXELONMARS-99”; series_ticker: “KXELONMARS”; end_ts: 2024-01-02.
Open in Playground
GET/kalshi/market/{ticker}/orderbookapiKey2 credits/request
Returns the order book for one Kalshi market by `ticker`: bid levels for the `yes` side and the `no` side, each with `price` and `size`. Kalshi publishes bids only, so ask levels are not listed. The response also carries a `raw_unit_hint` for the price unit.
Required: ticker.
Sampled 14 Oct 2026: 35 items. Filled in every item: price, size. In the sample: price: 0.01 to 0.89, median 0.51; size: 7.84 to 19,691, median 400.
Open in Playground
GET/kalshi/marketsapiKey2 credits/request
Lists Kalshi markets, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by `event_ticker`, `series_ticker`, `ticker`, or `status` (`unopened`, `open`, `closed` or `settled`). Each market has its title, status, prices, bid and ask, volume, open interest and rules text. A returned status can read `active` even though the filter does not accept it.
Optional: limit, cursor, event_ticker, series_ticker, status (4 allowed values: unopened, open, closed, settled), ticker.
Sampled 14 Oct 2026: 20 items. Filled in every item: ticker, event_ticker, title, sub_title, status, market_type, open_time, close_time and 10 more. In the sample: open_time: 2026-10-13; ticker: “KXMVECROSSCATEGORY0-S20262BC98949215-DF1C410E741” and 19 other values; title: median 147 characters; event_ticker: “KXMVECROSSCATEGORY0-S20262BC98949215” and 19 other values; sub_title: median 147 characters; close_time: 2026-10-15 to 2026-10-28; expiration_time: 2026-10-15 to 2026-10-28.
Open in Playground
GET/kalshi/markets/historyapiKey2 credits/request
Returns candlesticks for up to 25 Kalshi markets in one call. `market_tickers` is required, as a comma-separated list or repeated values. `start_ts` defaults to 7 days ago, `end_ts` to now and `period_interval` to 1440 minutes. Results are grouped by market. Ranges are capped at 366 days.
Required: market_tickers. Optional: start_ts, end_ts, period_interval, include_latest_before_start.
Sampled 14 Oct 2026: 1 item. Filled in every item: ticker, series_ticker, start_ts, end_ts, period_interval, source_url, fetched_at. Not in every item: candlesticks (0). In the sample: start_ts: 2024-01-01; ticker: “KXELONMARS-99”; source_url: external-api.kalshi.com; series_ticker: “KXELONMARS”; end_ts: 2024-01-02; fetched_at: 2026-10-13.
Open in Playground
GET/kalshi/markets/orderbooksapiKey2 credits/request
Returns order books for up to 25 Kalshi markets in one call. `tickers` is required, as a comma-separated list or repeated values. Each book has the `yes` and `no` bid levels with `price` and `size`; ask levels are not listed. Books come back in the order requested.
Required: tickers.
Open in Playground
GET/kalshi/seriesapiKey2 credits/request
Lists Kalshi series, up to `limit` rows (default 25, max 200). Each series has its ticker, title, category, frequency, fee type and multiplier, settlement sources, and contract and contract-terms URLs. The catalogue comes back in one page, so `cursor` has no effect on this endpoint.
Optional: limit, cursor.
Sampled 14 Oct 2026: 20 items. Filled in every item: series_ticker, title, category, frequency, fee_type, fee_multiplier, contract_url, contract_terms_url and 2 more. In the sample: last_updated: 2026-08-29 to 2026-10-12; category: Sports (9), Politics (4), Entertainment (3) and 3 more; series_ticker: “EMMYDACTR” and 19 other values; contract_url: assets.kalshi.com; settlement_sources: median 1 entry; title: “Emmys Award for Lead Drama Actress” and 19 other values; frequency: one_off (9), custom (9), annual (1) and 1 more; contract_terms_url: assets.kalshi.com.
Open in Playground
GET/kalshi/series/{series_ticker}apiKey2 credits/request
Returns one Kalshi series by `series_ticker` (such as `KXELONMARS`). The response has the title, category, frequency, fee type and multiplier, settlement sources with name and URL, contract and contract-terms URLs, and last update time. An unknown ticker returns a not-found error.
Required: series_ticker.
Sampled 14 Oct 2026: 17 items. Filled in every item: name, url. In the sample: url: theguardian.com and 13 other hosts; name: median 15 characters.
Open in Playground
GET/kalshi/tradesapiKey2 credits/request
Lists recent Kalshi trades, up to `limit` rows (default 25, max 200), continued with `cursor`. Filter by market `ticker` and by created time with `min_ts` and `max_ts` (Unix seconds, at most 366 days apart). Each trade has its id, count, yes and no price, taker side and created time.
Optional: limit, cursor, ticker, min_ts, max_ts.
Sampled 14 Oct 2026: 20 items. Filled in every item: trade_id, ticker, created_time, created_ts, count, yes_price, no_price, taker_side and 2 more. In the sample: created_time: 2026-10-11 to 2026-10-13; taker_side: yes (14), no (6); count: 0.1 to 181.14, median 2.03; created_ts: 2026-10-11 to 2026-10-13; yes_price: 0.09 to 0.12, median 0.11; no_price: 0.88 to 0.91, median 0.89; taker_outcome_side: yes (14), no (6); taker_book_side: bid (14), ask (6).
Open in Playground