BBO/TOB

l2:bbo

Best Bid/Offer — sent on every best bid or ask price/amount change. Full state, no deltas.

Channel: l2:bbo:{instrument} Example: l2:bbo:BTC_USDC-PERPETUAL

Payload

Positional array format. Empty string "" for absent sides.

[1704067200000, "50000", "1000", "50100", "800"]
IndexTypeFieldDescription
0integertimestampUnix timestamp in milliseconds
1stringbest_bid_priceHighest bid price ("" if no bids)
2stringbest_bid_amountNotional USD at best bid ("" if no bids)
3stringbest_ask_priceLowest ask price ("" if no asks)
4stringbest_ask_amountNotional USD at best ask ("" if no asks)
sub.on("publication", (ctx) => {
  const [timestamp, bidPrice, bidAmount, askPrice, askAmount] = ctx.data;
});

Recovery

BBO channels do not use cache recovery — updates are frequent enough that clients receive data within milliseconds. Reconnect recovery is still automatic (server-pushed).