Skip to main content
NOTE: This is the documentation for the websocket channels futures_blocks and futures_blocks:<SYMBOL>. The channels are available on the Advanced API tier, or with the futures add-on. Contact [email protected], [email protected] or [email protected] for access. You can find fully-functional examples that stream data from many channels here: Connect to the websocket URI: wss://api.unusualwhales.com/socket?token=<YOUR_API_TOKEN> then join the channel you wish to stream, for example futures_blocks:ESZ6 for block trades in ESZ6. Omit the symbol suffix (futures_blocks) to receive block trades in every contract and strategy. Each message carries one CME block trade in a futures contract or in a multi-leg futures strategy. CME publishes a block trade after it executes: executed_at is when the trade executed and reported_at is when CME reported it.

Delivery characteristics

  • A block trade can be sent more than once. CME reports a block with the action new, and reports it again with update when the block changes or delete when CME removes it. The newest message for a block replaces the earlier ones. Identify a block by trade_id, exchange and trade_date together, because CME reuses a trade_id in later sessions. A repeated report, or one older than the last message sent for the block, is not sent.
  • A multi-leg trade arrives as one message. For a multi-leg (MLEG) block the legs array lists the legs. CME also reports each leg as a separate trade, and the channel does not send those.
  • futures_blocks:<SYMBOL> matches sym exactly, and the symbol is case-sensitive. A multi-leg block goes to the channel of its strategy symbol, such as futures_blocks:SR3:GN, not to the channels of its leg contracts.
  • Only futures and multi-leg blocks are sent. sec_type is FUT or MLEG. Block trades in options on futures are not sent on this channel.
  • The channel sends nothing when you join. To load earlier block trades, call /futures/:contract/trades or /futures/flow with blocks_only=true.
  • Joining without access returns an error. Without the Advanced API tier or the futures add-on, a join is answered with an {"error": "..."} frame and the connection stays open.
Payload format for a single contract:
Payload format for a multi-leg strategy:

Field reference

price, qty and the leg prices and quantities are decimal strings with at most 8 decimal places. Timestamps are Unix timestamps in milliseconds. Each entry of legs:
Last modified on September 28, 2026