Skip to main content
Market data is available on the dedicated KalshiMD session. It supports order book snapshots, incremental updates, and per-market trading-status changes via Security Status. Subscriptions are identified by Symbol<55>. KalshiMD does not support message retransmission. Use ResetSeqNumFlag<141>=Y on Logon.

Message Flow

Market Data Request (35=V)

TagNameTypeRequiredDescription
263SubscriptionRequestTypeCharY0=Snapshot, 1=Snapshot plus updates, 2=Disable previous snapshot plus update request
146NoRelatedSymIntegerCNumber of 55=Symbol entries in the repeating group that follows. Required for 263=0 and 263=1. For 263=2, the listed symbols are unsubscribed; omit to cancel all of the session’s subscriptions.
55SymbolStringCRepeating group field. The market tickers to subscribe to or cancel.
Example snapshot request
8=FIXT.1.1|35=V|49=your-api-key|56=KalshiMD|263=0|146=1|55=KXNBAGAME-26MAY25NYKCLE-NYK|
Example snapshot-plus-updates subscription
8=FIXT.1.1|35=V|49=your-api-key|56=KalshiMD|263=1|146=1|55=KXNBAGAME-26MAY25NYKCLE-NYK|
Example cancel a symbol
8=FIXT.1.1|35=V|49=your-api-key|56=KalshiMD|263=2|146=1|55=KXNBAGAME-26MAY25NYKCLE-NYK|
Example cancel all subscriptions
8=FIXT.1.1|35=V|49=your-api-key|56=KalshiMD|263=2|

Market Data Snapshot Full Refresh (35=W)

Sent in response to a snapshot request and immediately after a snapshot-plus-updates subscription is accepted. Correlate by Symbol<55>.
TagNameTypeRequiredDescription
55SymbolStringYMarket ticker.
268NoMDEntriesIntegerYNumber of book levels.
269MDEntryTypeCharYRepeating group field. 0=Bid, 1=Offer
270MDEntryPxPriceYBook level price in dollars.
271MDEntrySizeQuantityYBook level size in contracts.
Example snapshot response
8=FIXT.1.1|35=W|49=KalshiMD|56=your-api-key|55=KXNBAGAME-26MAY25NYKCLE-NYK|268=2|269=0|270=0.3500|271=10.00|269=1|270=0.6500|271=5.00|

Market Data Incremental Refresh (35=X)

Sent after a subscribed market’s aggregated book levels change or a trade occurs. Correlate by Symbol<55> on each entry.
TagNameTypeRequiredDescription
268NoMDEntriesIntegerYNumber of market data entries.
279MDUpdateActionCharYRepeating group field. 0=New, 1=Change, 2=Delete.
55SymbolStringYRepeating group field. Market ticker.
269MDEntryTypeCharYRepeating group field. 0=Bid, 1=Offer, 2=Trade
270MDEntryPxPriceYPrice in dollars.
271MDEntrySizeQuantityYSize in contracts.
Example incremental update
8=FIXT.1.1|35=X|49=KalshiMD|56=your-api-key|268=1|279=1|55=KXNBAGAME-26MAY25NYKCLE-NYK|269=0|270=0.3500|271=15.00|
Example trade update
8=FIXT.1.1|35=X|49=KalshiMD|56=your-api-key|268=1|279=0|55=KXNBAGAME-26MAY25NYKCLE-NYK|269=2|270=0.6500|271=3.00|

Market Data Request Reject (35=Y)

Sent when a market data request cannot be accepted. Unknown market tickers are not currently rejected; the server sends an empty snapshot if it has no order book for the requested symbol.
TagNameTypeRequiredDescription
281MDReqRejReasonCharNReject reason.
58TextStringNHuman-readable rejection detail.

Common Reject Reasons (281)

  • 2=Insufficient bandwidth, including request or session symbol limits
  • 4=Unsupported SubscriptionRequestType

Security Status

KalshiMD also streams per-market trading-status changes as SecurityStatus<35=f>. Subscribe by Symbol<55> with SecurityStatusRequest<35=e>. Updates are changes-only; no initial status is sent on subscribe.

Security Status Request (35=e)

TagNameTypeRequiredDescription
263SubscriptionRequestTypeCharY1=Subscribe, 2=Unsubscribe.
55SymbolStringYThe single market ticker to subscribe to or unsubscribe.
Example subscribe
8=FIXT.1.1|35=e|49=your-api-key|56=KalshiMD|263=1|55=KXNBAGAME-26MAY25NYKCLE-NYK|
Example unsubscribe
8=FIXT.1.1|35=e|49=your-api-key|56=KalshiMD|263=2|55=KXNBAGAME-26MAY25NYKCLE-NYK|

Security Status (35=f)

Streamed when a subscribed market changes trading state. Correlate by Symbol<55>.
TagNameTypeRequiredDescription
55SymbolStringYMarket ticker.
326SecurityTradingStatusIntYSee Trading Status Lifecycle.
Example trading halt
8=FIXT.1.1|35=f|49=KalshiMD|56=your-api-key|55=KXNBAGAME-26MAY25NYKCLE-NYK|326=2|

Trading Status Lifecycle (326)

  • 3=Resume: the market was activated and is open for trading
  • 2=Trading halt: the market was deactivated
  • 100=Kalshi determined: the market was determined; trading has ended and the result is known
  • 101=Kalshi settled: the market settled. The subscription for that symbol is then dropped.
Scheduled (time-based) opens and closes are not emitted as discrete events and are not reported here.