Summary
README and docs disagree on the WebSocket channel count, AND the README lists wire-channel names where it claims to list SDK method suffixes — autocompleting from the README produces method names that don't exist.
(1) Count mismatch: 13 (README) vs 11 (docs)
README.md:14 says "WebSocket API (13 channels)" and L194 says:
Available channels (13): 11 have dedicated subscribe_* methods … The remaining two (control_frames, root) are reachable through the generic subscribe(channel, ...) escape hatch.
docs/websockets.md:3-4:
KalshiWebSocket, that covers all 11 Kalshi channels
docs/websockets.md:32 ## The 11 channels table enumerates exactly 11 rows. kalshi/ws/client.py exposes exactly 11 subscribe_* methods.
(2) README WS list uses wire-channel names, not SDK methods
L194-199:
dedicated subscribe_* methods — ticker, trade, orderbook_delta, fill, market_positions, user_orders, order_group_updates, market_lifecycle_v2, multivariate, multivariate_market_lifecycle, communications
Actual SDK methods (verified in kalshi/ws/client.py):
| README claim |
Actual method |
order_group_updates |
subscribe_order_group |
market_lifecycle_v2 |
subscribe_market_lifecycle |
multivariate_market_lifecycle |
subscribe_multivariate_lifecycle |
A reader autocompleting from this README list types methods that don't exist.
Location
README.md:14, 194-199
docs/websockets.md:3-4, 32-46
kalshi/ws/client.py:436, 447, 458, 469, 476, 484, 492, 500, 511, 519, 527 (the 11 subscribe_* defs)
Recommended fix
-
Pick one channel count and align both docs. If control_frames / root are real AsyncAPI channels, document them once with their actual names and example payloads, then keep the 13 framing. Otherwise drop the 13 and use 11 everywhere.
-
Restate the README list using SDK method suffixes:
ticker, trade, orderbook_delta, fill, market_positions, user_orders, order_group, market_lifecycle, multivariate, multivariate_lifecycle, communications
Or link directly to the docs/websockets.md channel table.
Severity & category
medium / documentation, ws
Summary
README and docs disagree on the WebSocket channel count, AND the README lists wire-channel names where it claims to list SDK method suffixes — autocompleting from the README produces method names that don't exist.
(1) Count mismatch: 13 (README) vs 11 (docs)
README.md:14says "WebSocket API (13 channels)" and L194 says:docs/websockets.md:3-4:docs/websockets.md:32## The 11 channelstable enumerates exactly 11 rows.kalshi/ws/client.pyexposes exactly 11subscribe_*methods.(2) README WS list uses wire-channel names, not SDK methods
L194-199:
Actual SDK methods (verified in
kalshi/ws/client.py):order_group_updatessubscribe_order_groupmarket_lifecycle_v2subscribe_market_lifecyclemultivariate_market_lifecyclesubscribe_multivariate_lifecycleA reader autocompleting from this README list types methods that don't exist.
Location
README.md:14, 194-199docs/websockets.md:3-4, 32-46kalshi/ws/client.py:436, 447, 458, 469, 476, 484, 492, 500, 511, 519, 527(the 11subscribe_*defs)Recommended fix
Pick one channel count and align both docs. If
control_frames/rootare real AsyncAPI channels, document them once with their actual names and example payloads, then keep the13framing. Otherwise drop the13and use11everywhere.Restate the README list using SDK method suffixes:
Or link directly to the
docs/websockets.mdchannel table.Severity & category
medium / documentation, ws