Connect to the Kalshi WebSocket for real-time price, orderbook, and trade updates.
Connect to the WebSocket endpoint:
Code sample:
const ws = new WebSocket('wss://api.delphiterminal.co/ws/kalshi');Once connected, send a JSON message to subscribe to Kalshi markets using their klsi_id:
Code sample:
{ "action": "subscribe", "klsi_ids": ["KXBTCD-25FEB14-B55000", "KXETHD-25FEB14-B3100"], "message_types": ["prices", "orderbook", "trades"]}| Field | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | subscribe or unsubscribe |
| klsi_ids | array | Yes | Array of Kalshi market identifiers |
| message_types | array | No | ["prices"], ["orderbook"], ["trades"], or any combination. Defaults to prices and orderbook if omitted |
Code sample:
{ "action": "unsubscribe", "klsi_ids": ["KXBTCD-25FEB14-B55000"]}Real-time price updates for subscribed markets:
Code sample:
{ "klsi_id": "KXBTCD-25FEB14-B55000", "price": 0.65, "yes_bid": 0.64, "yes_ask": 0.66, "volume": 15000, "open_interest": 8500, "last_update": "2026-02-03T14:30:00Z"}Real-time orderbook snapshots for subscribed markets:
Code sample:
{ "klsi_id": "KXBTCD-25FEB14-B55000", "bid_side": [0, 0, 0, ..., 150, 200, 100], "ask_side": [100, 150, 200, ..., 0, 0, 0], "last_update": "2026-02-03T14:30:00Z"}Real-time trade executions for subscribed markets:
Code sample:
{ "id": "trade123", "klsi_id": "KXBTCD-25FEB14-B55000", "exchange": "klsi", "yes_price": 0.65, "no_price": 0.35, "count": 10, "taker_side": "buy", "last_update": "2026-02-03T14:30:00Z"}Code sample:
const ws = new WebSocket('wss://api.delphiterminal.co/ws/kalshi');ws.onopen = () => { console.log('Connected to Kalshi WebSocket'); // Subscribe to markets ws.send(JSON.stringify({ action: 'subscribe', klsi_ids: ['KXBTCD-25FEB14-B55000'], message_types: ['prices', 'orderbook', 'trades'] }));};ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log('Received:', data);};ws.onclose = () => { console.log('Disconnected from WebSocket');};ws.onerror = (error) => { console.error('WebSocket error:', error);};| Property | Value |
|---|---|
| Protocol | WebSocket (wss://) |
| Keepalive | Ping every 54 seconds |
| Timeout | 60 seconds without pong |
| Max Message Size | 512 KB |
klsi_id (Kalshi market identifier) to subscribeWebSocket connection upgraded successfully