Price Updates

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

FieldTypeDescription
messageTypestringPrice update message type — price-update
body.symbolstringThe symbol the update is for (the one you subscribed to)
body.bid_levels[]arrayBid price levels, up to a depth of 10
body.ask_levels[]arrayAsk price levels, up to a depth of 10

Bid / ask level object

Each entry in bid_levels[] and ask_levels[] has the same shape:

FieldTypeDescription
pricestringThe level price
quantitystringThe level quantity
sidestringThe level side — buy (bids) or sell (asks)

Example 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. price and quantity are delivered as strings — parse them into a decimal/BigDecimal type 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-update reflects 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 symbol field tells you which subscription the update belongs to when you're following several at once.

Next steps