Messages
{
"type": "trade",
"outcomeId": "clv2abc123def456",
"channel": "orderbook",
"venue": "kalshi",
"side": "buy",
"price": 0.55,
"size": 100,
"timestamp": 1710000000000
}{
"action": "subscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}{
"action": "unsubscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}Websockets
Trades
Subscribe to public trade feed for outcomes. No user auth required. Uses { action: "subscribe", channel: "trades", outcomeIds } message format. Shares the 500-subscription limit with orderbook subscriptions.
WSS
/
Messages
{
"type": "trade",
"outcomeId": "clv2abc123def456",
"channel": "orderbook",
"venue": "kalshi",
"side": "buy",
"price": 0.55,
"size": 100,
"timestamp": 1710000000000
}{
"action": "subscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}{
"action": "unsubscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}appId
type:userPassword
App-level auth: pass appId as a query parameter on connect. Required for all connections. The appId must belong to an active app with matching allowed origins.
jwt
type:http
User-level auth: pass JWT as token query param on connect, or send { action: 'authenticate', token } mid-session. Required for user-specific events (orders, balances). Same JWT as the REST API.
Trade
type:object
Public trade event from a venue
Subscribe to orderbook
type:object
Subscribe to aggregated orderbook updates for markets
Unsubscribe from orderbook
type:object
⌘I