X-Api-Key — the same key you
use on HTTP, same scope rules.
The protocol is Kalshi-style (envelope with
id / cmd / params)
and Polymarket-style identifier lists (channel + ids[]).
Connect
Same handshake contract for both gateways:X-Api-Key: ps_live_<keyId>_<secret>header on the upgrade request?key=<token>query parameter — for browser clients that can’t set custom headers on the WebSocket upgrade
/ws/market the greeting is just { "gateway": "market", "authMethod": "api_key", "protocolVersion": 2 } — no wallet context, since market data isn’t per-user.
Command envelope
Every client-to-server message uses the same shape:id— client-side correlation id; echoed in the server’s responsecmd—subscribe/update_subscription/unsubscribe/list_subscriptions/pingparams— command-specific payload
sid (numeric).
Use sid for subsequent updates / unsubscribes / event routing on
the client side. sids are not stable across reconnects.
Channel catalog
Public, on/ws/market:
Private, on
/ws/user:
Detailed payloads + examples in
Subscriptions and
Messages. The two crypto feeds have
their own page: Crypto price feeds.
Where do tokenId and conditionId come from?
Market data is keyed by on-chain native ids, not by app symbol.
Pull them from REST first:
GET /api/markets/{symbol}→conditionId/questionId/yesTokenId/noTokenId(binary)- For neg-risk multi-outcome markets, each question has its own
conditionIdand yes/no token ids — resolve them through the on-chainNegRiskAdapterbefore subscribing
/ws/market and subscribe by those native ids:
What clients should NOT do
- No symbol-based subscriptions. Use
tokenId/conditionId. - No invented room strings like
vault:0xabc:erc1155. Usechannel + idsonly. - No mixing of
/ws/userand/ws/marketon one socket. The gateway rejects cross-gateway channels withforbidden— open one socket per gateway. - No assumptions about
sidstability across reconnects. After any close, re-subscribe from scratch.
Next
Subscriptions
Per-channel subscribe / update / unsubscribe payloads.
Message shapes
Outbound event envelope and full event catalog by channel.
Reconnect
Heartbeat, sid rebuild, snapshot resync.
API keys
Scope catalog, rotation, revoke.