Kalshi
Access prediction markets and trade on Kalshi
Kalshi is a federally regulated exchange where users can trade directly on the outcomes of future events—prediction markets. Kalshi’s robust API and Sim integration enable agents and workflows to programmatically access all aspects of the platform, supporting everything from research and analytics to automated trading and monitoring.
With Kalshi’s integration in Sim, you can:
- Market & Event Data: Search, filter, and retrieve real-time and historical data for markets and events; fetch granular details on market status, series, event groupings, and more.
- Account & Balance Management: Access account balances, available funds, and monitor real-time open positions.
- Order & Trade Management: Place new orders, cancel existing ones, view open orders, retrieve a live orderbook, and access complete trade histories.
- Execution Analysis: Fetch recent trades, historical fills, and candlestick data for backtesting or market structure research.
- Monitoring: Check exchange-wide or series-level status, receive real-time updates about market changes or trading halts, and automate responses.
- Automation Ready: Build end-to-end automated agents and dashboards that consume, analyze, and trade on real-world event probabilities.
By using these unified tools and endpoints, you can seamlessly incorporate Kalshi’s prediction markets, live trading capabilities, and deep event data into your AI-powered applications, dashboards, and workflows—enabling sophisticated, automated decision-making tied to real-world outcomes.
Integrate Kalshi prediction markets into the workflow. Can get markets, market, events, event, balance, positions, orders, orderbook, trades, candlesticks, fills, series, exchange status, and place/cancel/amend trades.
Retrieve a list of prediction markets from Kalshi with all filtering options (V2 - full API response)
| Parameter | Type | Required | Description |
|---|
status | string | No | Filter by status (unopened, open, closed, settled) |
seriesTicker | string | No | Filter by series ticker |
eventTicker | string | No | Filter by event ticker |
limit | string | No | Number of results (1-1000, default: 100) |
cursor | string | No | Pagination cursor for next page |
| Parameter | Type | Description |
|---|
markets | array | Array of market objects with all API fields |
cursor | string | Pagination cursor for fetching more results |
Retrieve details of a specific prediction market by ticker (V2 - full API response)
| Parameter | Type | Required | Description |
|---|
ticker | string | Yes | The market ticker (e.g., "KXBTC-24DEC31") |
| Parameter | Type | Description |
|---|
market | object | Market object with all API fields |
↳ ticker | string | Market ticker |
↳ event_ticker | string | Event ticker |
↳ market_type | string | Market type |
↳ title | string | Market title |
↳ subtitle | string | Market subtitle |
↳ yes_sub_title | string | Yes outcome subtitle |
↳ no_sub_title | string | No outcome subtitle |
↳ open_time | string | Market open time |
↳ close_time | string | Market close time |
↳ expected_expiration_time | string | Expected expiration time |
↳ expiration_time | string | Expiration time |
↳ latest_expiration_time | string | Latest expiration time |
↳ settlement_timer_seconds | number | Settlement timer in seconds |
↳ status | string | Market status |
↳ response_price_units | string | Response price units |
↳ notional_value | number | Notional value |
↳ tick_size | number | Tick size |
↳ yes_bid | number | Current yes bid price |
↳ yes_ask | number | Current yes ask price |
↳ no_bid | number | Current no bid price |
↳ no_ask | number | Current no ask price |
↳ last_price | number | Last trade price |
↳ previous_yes_bid | number | Previous yes bid |
↳ previous_yes_ask | number | Previous yes ask |
↳ previous_price | number | Previous price |
↳ volume | number | Total volume |
↳ volume_24h | number | 24-hour volume |
↳ liquidity | number | Market liquidity |
↳ open_interest | number | Open interest |
↳ result | string | Market result |
↳ cap_strike | number | Cap strike |
↳ floor_strike | number | Floor strike |
↳ can_close_early | boolean | Can close early |
↳ expiration_value | string | Expiration value |
↳ category | string | Market category |
↳ risk_limit_cents | number | Risk limit in cents |
↳ strike_type | string | Strike type |
↳ rules_primary | string | Primary rules |
↳ rules_secondary | string | Secondary rules |
↳ settlement_source_url | string | Settlement source URL |
↳ custom_strike | object | Custom strike object |
↳ underlying | string | Underlying asset |
↳ settlement_value | number | Settlement value |
↳ cfd_contract_size | number | CFD contract size |
↳ yes_fee_fp | number | Yes fee (fixed-point) |
↳ no_fee_fp | number | No fee (fixed-point) |
↳ last_price_fp | number | Last price (fixed-point) |
↳ yes_bid_fp | number | Yes bid (fixed-point) |
↳ yes_ask_fp | number | Yes ask (fixed-point) |
↳ no_bid_fp | number | No bid (fixed-point) |
↳ no_ask_fp | number | No ask (fixed-point) |
Retrieve a list of events from Kalshi with optional filtering (V2 - exact API response)
| Parameter | Type | Required | Description |
|---|
status | string | No | Filter by status (open, closed, settled) |
seriesTicker | string | No | Filter by series ticker |
withNestedMarkets | string | No | Include nested markets in response (true/false) |
limit | string | No | Number of results (1-200, default: 200) |
cursor | string | No | Pagination cursor for next page |
| Parameter | Type | Description |
|---|
events | array | Array of event objects |
milestones | array | Array of milestone objects (if requested) |
cursor | string | Pagination cursor for fetching more results |
Retrieve details of a specific event by ticker (V2 - exact API response)
| Parameter | Type | Required | Description |
|---|
eventTicker | string | Yes | The event ticker |
withNestedMarkets | string | No | Include nested markets in response (true/false) |
| Parameter | Type | Description |
|---|
event | object | Event object with full details matching Kalshi API response |
↳ event_ticker | string | Event ticker |
↳ series_ticker | string | Series ticker |
↳ title | string | Event title |
↳ sub_title | string | Event subtitle |
↳ mutually_exclusive | boolean | Mutually exclusive markets |
↳ category | string | Event category |
↳ collateral_return_type | string | Collateral return type |
↳ strike_date | string | Strike date |
↳ strike_period | string | Strike period |
↳ available_on_brokers | boolean | Available on brokers |
↳ product_metadata | object | Product metadata |
↳ markets | array | Nested markets (if requested) |
Retrieve your account balance and portfolio value from Kalshi (V2 - exact API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
| Parameter | Type | Description |
|---|
balance | number | Account balance in cents |
portfolio_value | number | Portfolio value in cents |
updated_ts | number | Unix timestamp of last update (milliseconds) |
Retrieve your open positions from Kalshi (V2 - exact API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
ticker | string | No | Filter by market ticker |
eventTicker | string | No | Filter by event ticker (max 10 comma-separated) |
settlementStatus | string | No | Filter by settlement status (all, unsettled, settled). Default: unsettled |
limit | string | No | Number of results (1-1000, default: 100) |
cursor | string | No | Pagination cursor for next page |
| Parameter | Type | Description |
|---|
market_positions | array | Array of market position objects |
event_positions | array | Array of event position objects |
cursor | string | Pagination cursor for fetching more results |
Retrieve your orders from Kalshi with optional filtering (V2 with full API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
ticker | string | No | Filter by market ticker |
eventTicker | string | No | Filter by event ticker (max 10 comma-separated) |
status | string | No | Filter by status (resting, canceled, executed) |
limit | string | No | Number of results (1-200, default: 100) |
cursor | string | No | Pagination cursor for next page |
| Parameter | Type | Description |
|---|
orders | array | Array of order objects with full API response fields |
cursor | string | Pagination cursor for fetching more results |
Retrieve details of a specific order by ID from Kalshi (V2 with full API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
orderId | string | Yes | The order ID to retrieve |
| Parameter | Type | Description |
|---|
order | object | Order object with full API response fields |
↳ order_id | string | Order ID |
↳ user_id | string | User ID |
↳ client_order_id | string | Client order ID |
↳ ticker | string | Market ticker |
↳ side | string | Order side (yes/no) |
↳ action | string | Action (buy/sell) |
↳ type | string | Order type (limit/market) |
↳ status | string | Order status (resting/canceled/executed) |
↳ yes_price | number | Yes price in cents |
↳ no_price | number | No price in cents |
↳ yes_price_dollars | string | Yes price in dollars |
↳ no_price_dollars | string | No price in dollars |
↳ fill_count | number | Filled contract count |
↳ fill_count_fp | string | Filled count (fixed-point) |
↳ remaining_count | number | Remaining contracts |
↳ remaining_count_fp | string | Remaining count (fixed-point) |
↳ initial_count | number | Initial contract count |
↳ initial_count_fp | string | Initial count (fixed-point) |
↳ taker_fees | number | Taker fees in cents |
↳ maker_fees | number | Maker fees in cents |
↳ taker_fees_dollars | string | Taker fees in dollars |
↳ maker_fees_dollars | string | Maker fees in dollars |
↳ taker_fill_cost | number | Taker fill cost in cents |
↳ maker_fill_cost | number | Maker fill cost in cents |
↳ taker_fill_cost_dollars | string | Taker fill cost in dollars |
↳ maker_fill_cost_dollars | string | Maker fill cost in dollars |
↳ queue_position | number | Queue position (deprecated) |
↳ expiration_time | string | Order expiration time |
↳ created_time | string | Order creation time |
↳ last_update_time | string | Last update time |
↳ self_trade_prevention_type | string | Self-trade prevention type |
↳ order_group_id | string | Order group ID |
↳ cancel_order_on_pause | boolean | Cancel on market pause |
Retrieve the orderbook (yes and no bids) for a specific market (V2 - includes depth and fp fields)
| Parameter | Type | Required | Description |
|---|
ticker | string | Yes | Market ticker (e.g., KXBTC-24DEC31) |
| Parameter | Type | Description |
|---|
orderbook | object | Orderbook with yes/no bids (legacy integer counts) |
↳ yes | array | Yes side bids as tuples [price_cents, count] |
↳ no | array | No side bids as tuples [price_cents, count] |
↳ yes_dollars | array | Yes side bids as tuples [dollars_string, count] |
↳ no_dollars | array | No side bids as tuples [dollars_string, count] |
orderbook_fp | object | Orderbook with fixed-point counts (preferred) |
↳ yes_dollars | array | Yes side bids as tuples [dollars_string, fp_count_string] |
↳ no_dollars | array | No side bids as tuples [dollars_string, fp_count_string] |
Retrieve recent trades with additional filtering options (V2 - includes trade_id and count_fp)
| Parameter | Type | Required | Description |
|---|
limit | string | No | Number of results (1-1000, default: 100) |
cursor | string | No | Pagination cursor for next page |
| Parameter | Type | Description |
|---|
trades | array | Array of trade objects with trade_id and count_fp |
cursor | string | Pagination cursor for fetching more results |
Retrieve OHLC candlestick data for a specific market (V2 - full API response)
| Parameter | Type | Required | Description |
|---|
seriesTicker | string | Yes | Series ticker |
ticker | string | Yes | Market ticker (e.g., KXBTC-24DEC31) |
startTs | number | Yes | Start timestamp (Unix seconds) |
endTs | number | Yes | End timestamp (Unix seconds) |
periodInterval | number | Yes | Period interval: 1 (1min), 60 (1hour), or 1440 (1day) |
| Parameter | Type | Description |
|---|
ticker | string | Market ticker |
candlesticks | array | Array of OHLC candlestick data with nested bid/ask/price objects |
Retrieve your portfolio
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
ticker | string | No | Filter by market ticker |
orderId | string | No | Filter by order ID |
minTs | number | No | Minimum timestamp (Unix milliseconds) |
maxTs | number | No | Maximum timestamp (Unix milliseconds) |
limit | string | No | Number of results (1-1000, default: 100) |
cursor | string | No | Pagination cursor for next page |
| Parameter | Type | Description |
|---|
fills | array | Array of fill/trade objects with all API fields |
cursor | string | Pagination cursor for fetching more results |
Retrieve details of a specific market series by ticker (V2 - exact API response)
| Parameter | Type | Required | Description |
|---|
seriesTicker | string | Yes | Series ticker |
| Parameter | Type | Description |
|---|
series | object | Series object with full details matching Kalshi API response |
↳ ticker | string | Series ticker |
↳ title | string | Series title |
↳ frequency | string | Event frequency |
↳ category | string | Series category |
↳ tags | array | Series tags |
↳ settlement_sources | array | Settlement sources |
↳ contract_url | string | Contract URL |
↳ contract_terms_url | string | Contract terms URL |
↳ fee_type | string | Fee type |
↳ fee_multiplier | number | Fee multiplier |
↳ additional_prohibitions | array | Additional prohibitions |
↳ product_metadata | object | Product metadata |
↳ volume | number | Series volume |
↳ volume_fp | number | Volume (fixed-point) |
Retrieve the current status of the Kalshi exchange (V2 - exact API response)
| Parameter | Type | Required | Description |
|---|
| Parameter | Type | Description |
|---|
exchange_active | boolean | Whether the exchange is active |
trading_active | boolean | Whether trading is active |
exchange_estimated_resume_time | string | Estimated time when exchange will resume (if inactive) |
Create a new order on a Kalshi prediction market (V2 with full API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
ticker | string | Yes | Market ticker (e.g., KXBTC-24DEC31) |
side | string | Yes | Side of the order: 'yes' or 'no' |
action | string | Yes | Action type: 'buy' or 'sell' |
count | string | Yes | Number of contracts (minimum 1) |
type | string | No | Order type: 'limit' or 'market' (default: limit) |
yesPrice | string | No | Yes price in cents (1-99) |
noPrice | string | No | No price in cents (1-99) |
yesPriceDollars | string | No | Yes price in dollars (e.g., "0.56") |
noPriceDollars | string | No | No price in dollars (e.g., "0.56") |
clientOrderId | string | No | Custom order identifier |
expirationTs | string | No | Unix timestamp for order expiration |
timeInForce | string | No | Time in force: 'fill_or_kill', 'good_till_canceled', 'immediate_or_cancel' |
buyMaxCost | string | No | Maximum cost in cents (auto-enables fill_or_kill) |
postOnly | string | No | Set to 'true' for maker-only orders |
reduceOnly | string | No | Set to 'true' for position reduction only |
selfTradePreventionType | string | No | Self-trade prevention: 'taker_at_cross' or 'maker' |
orderGroupId | string | No | Associated order group ID |
| Parameter | Type | Description |
|---|
order | object | The created order object with full API response fields |
↳ order_id | string | Order ID |
↳ user_id | string | User ID |
↳ client_order_id | string | Client order ID |
↳ ticker | string | Market ticker |
↳ side | string | Order side (yes/no) |
↳ action | string | Action (buy/sell) |
↳ type | string | Order type (limit/market) |
↳ status | string | Order status (resting/canceled/executed) |
↳ yes_price | number | Yes price in cents |
↳ no_price | number | No price in cents |
↳ yes_price_dollars | string | Yes price in dollars |
↳ no_price_dollars | string | No price in dollars |
↳ fill_count | number | Filled contract count |
↳ fill_count_fp | string | Filled count (fixed-point) |
↳ remaining_count | number | Remaining contracts |
↳ remaining_count_fp | string | Remaining count (fixed-point) |
↳ initial_count | number | Initial contract count |
↳ initial_count_fp | string | Initial count (fixed-point) |
↳ taker_fees | number | Taker fees in cents |
↳ maker_fees | number | Maker fees in cents |
↳ taker_fees_dollars | string | Taker fees in dollars |
↳ maker_fees_dollars | string | Maker fees in dollars |
↳ taker_fill_cost | number | Taker fill cost in cents |
↳ maker_fill_cost | number | Maker fill cost in cents |
↳ taker_fill_cost_dollars | string | Taker fill cost in dollars |
↳ maker_fill_cost_dollars | string | Maker fill cost in dollars |
↳ queue_position | number | Queue position (deprecated) |
↳ expiration_time | string | Order expiration time |
↳ created_time | string | Order creation time |
↳ last_update_time | string | Last update time |
↳ self_trade_prevention_type | string | Self-trade prevention type |
↳ order_group_id | string | Order group ID |
↳ cancel_order_on_pause | boolean | Cancel on market pause |
Cancel an existing order on Kalshi (V2 with full API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
orderId | string | Yes | The order ID to cancel |
| Parameter | Type | Description |
|---|
order | object | The canceled order object with full API response fields |
↳ order_id | string | Order ID |
↳ user_id | string | User ID |
↳ client_order_id | string | Client order ID |
↳ ticker | string | Market ticker |
↳ side | string | Order side (yes/no) |
↳ action | string | Action (buy/sell) |
↳ type | string | Order type (limit/market) |
↳ status | string | Order status (resting/canceled/executed) |
↳ yes_price | number | Yes price in cents |
↳ no_price | number | No price in cents |
↳ yes_price_dollars | string | Yes price in dollars |
↳ no_price_dollars | string | No price in dollars |
↳ fill_count | number | Filled contract count |
↳ fill_count_fp | string | Filled count (fixed-point) |
↳ remaining_count | number | Remaining contracts |
↳ remaining_count_fp | string | Remaining count (fixed-point) |
↳ initial_count | number | Initial contract count |
↳ initial_count_fp | string | Initial count (fixed-point) |
↳ taker_fees | number | Taker fees in cents |
↳ maker_fees | number | Maker fees in cents |
↳ taker_fees_dollars | string | Taker fees in dollars |
↳ maker_fees_dollars | string | Maker fees in dollars |
↳ taker_fill_cost | number | Taker fill cost in cents |
↳ maker_fill_cost | number | Maker fill cost in cents |
↳ taker_fill_cost_dollars | string | Taker fill cost in dollars |
↳ maker_fill_cost_dollars | string | Maker fill cost in dollars |
↳ queue_position | number | Queue position (deprecated) |
↳ expiration_time | string | Order expiration time |
↳ created_time | string | Order creation time |
↳ last_update_time | string | Last update time |
↳ self_trade_prevention_type | string | Self-trade prevention type |
↳ order_group_id | string | Order group ID |
↳ cancel_order_on_pause | boolean | Cancel on market pause |
reduced_by | number | Number of contracts canceled |
reduced_by_fp | string | Number of contracts canceled in fixed-point format |
Modify the price or quantity of an existing order on Kalshi (V2 with full API response)
| Parameter | Type | Required | Description |
|---|
keyId | string | Yes | Your Kalshi API Key ID |
privateKey | string | Yes | Your RSA Private Key (PEM format) |
orderId | string | Yes | The order ID to amend |
ticker | string | Yes | Market ticker |
side | string | Yes | Side of the order: 'yes' or 'no' |
action | string | Yes | Action type: 'buy' or 'sell' |
clientOrderId | string | Yes | The original client-specified order ID |
updatedClientOrderId | string | Yes | The new client-specified order ID after amendment |
count | string | No | Updated quantity for the order |
yesPrice | string | No | Updated yes price in cents (1-99) |
noPrice | string | No | Updated no price in cents (1-99) |
yesPriceDollars | string | No | Updated yes price in dollars (e.g., "0.56") |
noPriceDollars | string | No | Updated no price in dollars (e.g., "0.56") |
| Parameter | Type | Description |
|---|
old_order | object | The original order object before amendment |
↳ order_id | string | Order ID |
↳ user_id | string | User ID |
↳ ticker | string | Market ticker |
↳ event_ticker | string | Event ticker |
↳ status | string | Order status |
↳ side | string | Order side (yes/no) |
↳ type | string | Order type (limit/market) |
↳ yes_price | number | Yes price in cents |
↳ no_price | number | No price in cents |
↳ action | string | Action (buy/sell) |
↳ count | number | Number of contracts |
↳ remaining_count | number | Remaining contracts |
↳ created_time | string | Order creation time |
↳ expiration_time | string | Order expiration time |
↳ order_group_id | string | Order group ID |
↳ client_order_id | string | Client order ID |
↳ place_count | number | Place count |
↳ decrease_count | number | Decrease count |
↳ queue_position | number | Queue position |
↳ maker_fill_count | number | Maker fill count |
↳ taker_fill_count | number | Taker fill count |
↳ maker_fees | number | Maker fees |
↳ taker_fees | number | Taker fees |
↳ last_update_time | string | Last update time |
↳ take_profit_order_id | string | Take profit order ID |
↳ stop_loss_order_id | string | Stop loss order ID |
↳ amend_count | number | Amend count |
↳ amend_taker_fill_count | number | Amend taker fill count |
order | object | The amended order object with full API response fields |
↳ order_id | string | Order ID |
↳ user_id | string | User ID |
↳ ticker | string | Market ticker |
↳ event_ticker | string | Event ticker |
↳ status | string | Order status |
↳ side | string | Order side (yes/no) |
↳ type | string | Order type (limit/market) |
↳ yes_price | number | Yes price in cents |
↳ no_price | number | No price in cents |
↳ action | string | Action (buy/sell) |
↳ count | number | Number of contracts |
↳ remaining_count | number | Remaining contracts |
↳ created_time | string | Order creation time |
↳ expiration_time | string | Order expiration time |
↳ order_group_id | string | Order group ID |
↳ client_order_id | string | Client order ID |
↳ place_count | number | Place count |
↳ decrease_count | number | Decrease count |
↳ queue_position | number | Queue position |
↳ maker_fill_count | number | Maker fill count |
↳ taker_fill_count | number | Taker fill count |
↳ maker_fees | number | Maker fees |
↳ taker_fees | number | Taker fees |
↳ last_update_time | string | Last update time |
↳ take_profit_order_id | string | Take profit order ID |
↳ stop_loss_order_id | string | Stop loss order ID |
↳ amend_count | number | Amend count |
↳ amend_taker_fill_count | number | Amend taker fill count |