Skip to main content

Order Book

Type: NONE · Weight: 5 (regardless of limit)

Status: Implemented.

GET /api/v3/depth

Snapshot of the live order book from the matching engine, best levels first.

Request

GET /api/v3/depth?symbol=CBTC-USDCB&limit=20

Query params

NameTypeRequiredDefaultNotes
symbolstringyes—e.g. CBTC-USDCB.
limitintegerno100Levels per side. 0 → default; values above 5000 are clamped to 5000. Any value in range is accepted (not restricted to Binance's 5/10/20/50/100/500/1000/5000 set).

Response — 200 (values illustrative)

{
"lastUpdateId": 1756600000123,
"bids": [
["59990.00", "0.2500"],
["59985.50", "1.0000"]
],
"asks": [
["60010.00", "0.1200"],
["60012.00", "0.8000"]
]
}
FieldTypeNotes
lastUpdateIdnumberThe snapshot's millisecond timestamp (matching-engine clock, gateway clock as fallback). Monotonic per symbol, but not a Binance update-id sequence — there is no diff stream to reconcile against.
bids[], asks[][price, qty] string pairsBids descending, asks ascending.

Errors

HTTPcodeWhen
400—symbol missing (framework rejection, plain-text body).
429-1003Per-IP public weight exhausted.

If the matching engine cannot serve the snapshot (engine restarting, or a symbol it does not know), the endpoint returns HTTP 200 with empty bids and asks and a fresh lastUpdateId rather than an error. Treat an empty book on a normally liquid market as "engine unavailable" and retry, not as "no liquidity".

Differences from Binance

  • lastUpdateId is a timestamp, not an update sequence number. Use the WebSocket partial-depth streams for a 250 ms feed; there is no diff-depth stream to apply on top of this snapshot.
  • Weight is a flat 5.