Endpoint
Production gateway:Recommended Integration Flow (Production)
Use REST for snapshots and WebSocket for realtime updates:- Fetch an initial snapshot via REST (e.g.
/fixtures,/fixtures/odds) - Connect to the WebSocket and send
loginwith filters - Start processing updates after receiving
login_ok - Persist
serverEpochand per-channellastSeenId(fromentryId) - On reconnect, send
serverEpoch+lastSeenIdto resume - If you receive
snapshot_required, re-fetch the snapshot via REST
Login Mode
WebSocket supports login-only subscriptions. To change filters or channels, reconnect with a newlogin.
Message Envelope
All updates share a common envelope:channelβ stream name (e.g.odds,fixtures)typeβ message type (currently alwaysUPDATE)payloadβ channel-specific datatsβ UTC timestamp (milliseconds)entryIdβ cursor for replay/resume
entryId is not guaranteed to be contiguous. See Resume & Replay for full explanation.
Encoding: JSON, Binary, or zstd
Control at login usingreceiveType.
"json"(default) β all messages arrive as UTF-8 JSON"binary"β data frames use MessagePack; control frames remain JSON"zstd"β dictless zstd-compressed JSON (~5β6Γ smaller onodds); decode in one line, no dictionary handling. Control frames remain JSON."zstd-dict"β zstd with trained per-channel dictionaries (~7β9Γ onodds); the server pushes the dictionaries at connect. Self-describing per-frame, no per-channel logic. See Compression.
Control messages likelogin_ok,snapshot_required, andresume_completeare always JSON, even in binary mode.
Channel Types
- Fixture-scoped:
fixtures,scores,odds,bookmakers. β payloads includefixtureId - Future-scoped:
futures,bookmakersFutures,oddsFuturesβ includefutureId - Global:
currenciesβ no ID
See /websocket/channels/* for per-channel schemas.
Throughput Guidance
- Prefer
receiveType: "zstd"(or"zstd-dict"for the best ratio) on high-volume channels likeoddsβ far smaller frames thanbinary - Use filters (
sportIds,bookmakers) to reduce noise oddsshould be treated as latest state, not a tick ledger
Need full price movement or closing line value? Use the REST Historical Odds & CLV endpoints.