Skip to main content
Most rooms accept a subscribe_all boolean on the subscribe message to receive every update on that stream instead of a targeted subset. Reach for it when you want the full feed and intend to filter or fan out downstream, for example to warm a cache, drive an analytics pipeline, or mirror a room into your own store.

Enabling firehose

Set subscribe_all: true on the subscribe message after joining the room:
In firehose mode, polymarket_order_book conflates the full stream into order_book_batch envelopes emitted every 50ms rather than a message per book change, so you receive periodic batched snapshots instead of a raw per-update feed. Behaviour is consistent across rooms:
  • Targeting filters are ignored while subscribe_all is set. This is the id/slug/address selector each room uses to scope the stream, for example condition_ids, event_slugs, position_ids, tags, traders, or wallets.
  • Secondary filters still apply. Modifiers that shape the payload rather than pick a target keep working, for example timeframes on the metrics rooms, reasons on polymarket_trader_exit_markers, and the include_* flags on polymarket_accounts.
  • Some rooms firehose implicitly. polymarket_trades and polymarket_oracle_events treat an empty filter set as a firehose, so subscribe_all: true there is just the explicit form of “no filters”.

Per-room behaviour

Firehose subscriptions are billed per message like any other, and the full stream can be high volume. Check the room’s rate on WebSocket Pricing before turning it on, and prefer server-side targeting filters when you only need a slice.

Confirming the subscription

The room’s *_subscribe_response echoes subscribe_all so you can confirm the firehose is active:

Practical tips

  • Compress the firehose. The full stream is exactly where zstd compression earns its keep. Turn it on at the handshake before subscribing.
  • Filter downstream, not by reconnecting. A firehose plus server-side fan-out is cheaper to operate than churning targeted subscriptions, but you still pay per message, so only firehose what you’ll actually consume.
  • Order book is pre-batched. polymarket_order_book conflates its firehose into order_book_batch envelopes every 50ms, so you get periodic batched snapshots rather than a message per book change.
The dashboard websockets playground exposes subscribe_all as a per-room toggle, so you can preview a room’s firehose volume and payload before committing to it in code.

Next steps

  • Compression — zstd delivery for the high-volume streams firehose produces.
  • Rooms — every stream and its filters.
  • WebSocket Pricing — per-message rates per room.
Last modified on July 13, 2026