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"]| Index | Type | Field | Description |
|---|---|---|---|
| 0 | integer | timestamp | Unix timestamp in milliseconds |
| 1 | string | best_bid_price | Highest bid price ("" if no bids) |
| 2 | string | best_bid_amount | Notional USD at best bid ("" if no bids) |
| 3 | string | best_ask_price | Lowest ask price ("" if no asks) |
| 4 | string | best_ask_amount | Notional 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).
Updated 1 day ago
