Connection
Connect to the Parlays WebSocket endpoint:api_key query parameter. WebSocket access requires a Pro, Max, or Admin API key.
| Property | Value |
|---|---|
| Protocol | WebSocket (wss://) |
| Authentication | Required (Pro, Max, or Admin key) |
| Keepalive | Ping every 54 seconds |
| Timeout | 60 seconds without pong |
| Max Message Size | 512 KB |
Subscribing to markets
Once connected, send a JSON message to subscribe using Kalshi market tickers:| Field | Type | Required | Description |
|---|---|---|---|
action | string | Yes | subscribe or unsubscribe |
market_ids | array | Yes | Array of Kalshi market tickers |
message_types | array | No | ["rfq"], ["mve_trades"], or both. Defaults to ["rfq", "mve_trades"] if omitted |
Unsubscribing
Message types
All messages are wrapped with atype field indicating the message category.
RFQ events
Real-time Request for Quote lifecycle events (created, quoted, deleted, etc.):MVE trade events
Real-time Multi-Value Event parlay trade executions:Subscription limits
| Plan | Max Subscriptions | Max Items Per Subscription |
|---|---|---|
| Pro | 10 | 10 |
| Max | 100 | 500 |
| Admin | Unlimited | Unlimited |
Full example (JavaScript)
Full example (Python)
Important notes
- Authentication required — pass your API key via the
api_keyquery parameter - Pro plan or higher is required for WebSocket access (not available on Free)
- Uses Kalshi market tickers (e.g.
KXATPMATCH-26FEB13FRIKOR-FRI) to subscribe - Messages are only sent for markets you have explicitly subscribed to
- Both RFQ and MVE trade messages are included by default if
message_typesis omitted

