{
"type": "trade",
"marketId": "clv2abc123def456",
"venue": "kalshi",
"side": "buy",
"price": 0.55,
"size": 100,
"timestamp": 1710000000000
}{
"action": "subscribe_trades",
"marketIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}{
"action": "unsubscribe_trades",
"marketIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}Subscribe to public trade feed for canonical markets. No user auth required. Shares the 100-subscription limit with orderbook subscriptions.
{
"type": "trade",
"marketId": "clv2abc123def456",
"venue": "kalshi",
"side": "buy",
"price": 0.55,
"size": 100,
"timestamp": 1710000000000
}{
"action": "subscribe_trades",
"marketIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}{
"action": "unsubscribe_trades",
"marketIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}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.
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.
Public trade event from a venue