After you subscribe to a symbol, the server sends a price-update message every time that symbol's price changes. Each message carries the current bid and ask levels — up to a depth of 10 on each side.
RFQ liquidity product only. These prices are specific to the RFQ product and do not reflect CLOB pricing.
Message fields
| Field | Type | Description |
|---|---|---|
messageType | string | Price update message type — price-update |
body.symbol | string | The symbol the update is for (the one you subscribed to) |
body.bid_levels[] | array | Bid price levels, up to a depth of 10 |
body.ask_levels[] | array | Ask price levels, up to a depth of 10 |
Bid / ask level object
Each entry in bid_levels[] and ask_levels[] has the same shape:
| Field | Type | Description |
|---|---|---|
price | string | The level price |
quantity | string | The level quantity |
side | string | The level side — buy (bids) or sell (asks) |
Example price-update message
price-update message{
"messageType": "price-update",
"body": {
"symbol": "BTC/USD",
"bid_levels": [
{ "price": "42260.4677", "quantity": "0.59", "side": "buy" }
],
"ask_levels": [
{ "price": "42317.16195", "quantity": "0.59", "side": "sell" }
]
}
}Working with price updates
- Values are strings.
priceandquantityare delivered as strings — parse them into a decimal/BigDecimaltype rather than a float to avoid rounding errors. - Depth is up to 10. Each side can contain up to 10 levels; the best bid/ask is the top of each array. Fewer levels may be returned if the book is thin.
- Each message is a fresh view. A
price-updatereflects the current levels for that symbol at that moment — use it to replace your stored book for the symbol, not to patch it incrementally. - One symbol per message. The
symbolfield tells you which subscription the update belongs to when you're following several at once.
Next steps
- Subscribing to a Symbol — start a symbol's price feed
- Listing Available Symbols — discover valid symbols
- Maintaining Subscription — the 20-second heartbeat