Skip to main content
Four channel types, one envelope. Every message arrives wrapped in:
The wrapper has exactly two top-level fields: channel (string) and data (object). Filter your message handler on channel, not on a type field — there is no type field in the wire format.

Channel types

dist and snapshot are event-level channels — subscribe with just the event_key. book and trade are per-outcome channels — append :{outcome_key} (use ?expand=channels on /feeds/catalog to get a ready-to-paste list). snapshot payload differs from dist: snapshot wraps the per-outcome list under data.distribution and adds full orderbook state per outcome. dist uses data.outcomes.

Distribution

Shows the market-implied probability for every outcome in an event, combining data from both venues.

Book update

Normalized orderbook updates from both venues. Prices are contract prices (0-1), sizes are absolute quantities. Derived fields like best bid/ask, mid, spread, and depth are pre-computed on every update.

Trade

Every trade execution from both venues, including the specific contract traded, price, quantity, and a venue-provided trade ID.

Timestamps

Every book and trade message carries four timestamps (Unix ms) for end-to-end latency decomposition.