Skip to main content
Live pricing, depth, and trade history.

Get 24h Ticker

Get All Tickers

Returns a dictionary of ticker objects keyed by symbol, for every market at once.

Field Notes

The rolling window cutoff is the snapshot time minus 24 hours. A gap between previousClose and open is expected when no trade lands exactly at the cutoff.
Fields that cannot be computed yet are null, not zero, including high, low, bid, ask, vwap, open, change, percentage, and average. Treat null as no data. Reading it as zero corrupts any change derived from it.
A 503 with 24h ticker window not yet available is retryable. See Errors.

Get Orderbook

Levels use the same ordering as the WebSocket l2Book channel, so code that switches between REST snapshots and streaming frames does not need to re-sort. market_id lets a client call chain query endpoints that key on the binary market identifier without resolving the symbol map again. Its length varies by market, so treat it as an opaque string. See Chain Queries.

Maintaining a Local Book

  1. Subscribe to l2Book on Subscriptions and wait for its initial snapshot.
  2. Replace both local book sides with each subsequent l2Book frame. Frames contain the published book state, not incremental level deltas; remove levels absent from the replacement.
  3. Treat a REST snapshot as a separate read or fallback. REST nonce is a block height, while l2Book exposes no matching height or sequence. Do not merge buffered frames into REST by comparing nonce with WebSocket time.
  4. After a disconnect or suspected gap, discard the old stream state, resubscribe, and obtain a new baseline. Neither replay nor lossless recovery of intermediate changes is promised.
The common ordering rule is price ordering within a book: bids descending and asks ascending. It is not a cross-interface sequencing guarantee. Initial WebSocket snapshot time is server time; live book frames use block time. Do not use timestamps to line up REST and WebSocket data exactly.

Get Recent Trades

Each match writes both a maker leg and a taker leg. This endpoint returns the maker leg only, so a market’s trades are not double-counted. For one account’s own fills, which can be either leg, use User Fills.
Every row is the maker leg, and side follows that row’s indexed buy/sell direction. A row with side: "buy" represents the resting buyer, not an aggressing buyer. Do not infer taker direction without inverting this side. The realized fee currency follows the asset the maker received. Legacy rows without an indexed realized fee can instead contain a quote-currency estimate; see fee reconciliation.
type is null when the originating order cannot be resolved, and unknown when the chain reports a type the API does not recognize. On this endpoint order and cloid are always null.

Cursor Pagination

Use X-Next-Cursor and pass it as cursor, keeping filters unchanged. The older paired before_height and before_index form is also supported. See Pagination.

Get One Trade

Takes a trade id verbatim from /api/v1/trades/{symbol} or /api/v1/mytrades and resolves either leg of the match. The response has the same shape as the feed above, with order and cloid null. Use the returned ID verbatim. Its height and open-quantity components use canonical decimal format, and its full order-ID component uses lowercase hex, including any required leading zeros. A malformed id returns 400, and an id matching no fill returns 404.
The WebSocket tid is a hashed numeric id and is not valid input here. Only a REST id works.