Contents
Order book liquidity and walls
Order book liquidity of one coin: resting USD per price bucket for every covered venue (Hyperliquid l2Book in a fine layer ≈ ±2 % and a coarse layer ≈ ±10–25 %, Binance / Bybit local books within ±5 %), depth within 1 / 2 / 5 % and the bid/ask imbalance, plus walls (large resting liquidity relative to the buckets around it) that are active or ended in the last hour.
/api/v1/orderbook/{coin}Every keyDescription
Status pulled = removed before the price touched it, filled = the price traded into it. Walls cannot be attributed to wallets and a pulled wall is not proof of spoofing. With hours also the book heatmap over time (paid plans). Free keys: BTC, ETH and HYPE, current book only. Distances are fractions (walls[].distance, depth[].band; the older …Pct names hold the same fractions). Coins without a Hyperliquid market answer 404. Licence review: Binance / Bybit books and walls are withheld (meta.restricted); venue=binance|bybit answers 403 source_restricted.
Who can call it
Available with every key and keyless (X-Blockmetric-Access: public). Keys of Free accounts get free-tier data (real-time feeds, 30 days of history, heatmap over time for every coin over the last 24 hours, liquidation levels now for every coin, the same as the free web plan); Pro and Desk keys the data of their plan; API Dev / API Pro raise the limits.
- No key
- 24 h
- Free
- 30 days
- Pro
- 365 days
- Desk
- 1095 days
- API Dev
- 365 days
- API Pro
- 1095 days
History window per plan. Limits: Authentication & limits.
Parameters
| Parameter | Description |
|---|---|
coinstring · pathrequired | Coin name, e.g. BTC (case-insensitive). |
venuestring | hyperliquid | binance | bybit (optional; default every covered venue the API serves).one of hyperliquid, binance, bybit |
hoursinteger | Add the book heatmap over the last N hours (Pro / API Dev up to 168, Desk / API Pro up to 720); 0 or absent = current book only. Free keys: 403.0–720 · default 0 |
Response fields
Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.
| Field | Description |
|---|---|
coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
midnumber · nullable | Mid price between the best bid and ask. |
updatedAtstring (ISO 8601) · nullable | Newest snapshot. |
venues[]array of objects | Venues covered by this view. |
venues[].venue"hyperliquid" | "binance" | "bybit" | Venue of the order-flow data. |
venues[].layer"fine" | "coarse" | "book" | fine / coarse = Hyperliquid l2Book with 3 / 2 significant figures (the coarse layer leaves out the fine range); book = local CEX order book. |
venues[].stepnumber | Bucket size (price). |
venues[].midnumber | Mid price (latest trade of the venue, else the book). |
venues[].tsstring (ISO 8601) | Snapshot time. |
venues[].lonumber | Lowest price covered. |
venues[].hinumber | Highest price covered. |
venues[].bids[]array of objects | Bid buckets, from the price downwards. |
venues[].bids[].pxnumber | Lower edge of the price bucket. |
venues[].bids[].usdnumber | Resting liquidity in the bucket (USD). |
venues[].asks[]array of objects | Ask buckets, from the price upwards. |
venues[].asks[].pxnumber | Lower edge of the price bucket. |
venues[].asks[].usdnumber | Resting liquidity in the bucket (USD). |
venues[].bidUsdnumber | All bids of the snapshot (USD). |
venues[].askUsdnumber | All asks of the snapshot (USD). |
venues[].bid1pctnumber | Bids within 1 % of the mid (USD). |
venues[].ask1pctnumber | Asks within 1 % of the mid (USD). |
depth[]array of objects | Resting liquidity within bands around the mid (1 / 2 / 5 %). |
depth[].pctnumber | Band around the mid (fraction, 0.01 = 1 %). Deprecated: use band (same value). |
depth[].bandnumber | Band around the mid, fraction (0.01 = 1 %). |
depth[].bidUsdnumber | Bids in the band (USD). |
depth[].askUsdnumber | Asks in the band (USD). |
depth[].imbalancenumber · nullable | (bids - asks) / (bids + asks). |
walls[]array of objects | Active walls and walls that ended in the last hour, active first, largest first. |
walls[].idinteger | Stable id of the item; on paginated feeds the order key together with ts. |
walls[].venue"hyperliquid" | "binance" | "bybit" | Venue of the order-flow data. |
walls[].layer"fine" | "coarse" | "book" | Storage layer the data was read from (enum of this field). |
walls[].side"bid" | "ask" | Position side (long / short); for trades and orders the side named in the description. |
walls[].pxnumber | Lower edge of the bucket. |
walls[].topnumber | Upper edge of the bucket. |
walls[].usdnumber | Size at the last sighting (USD). |
walls[].maxUsdnumber | Largest size seen (USD). |
walls[].firstUsdnumber | Size when first seen (USD). |
walls[].firstSeenstring (ISO 8601) | First time this item was observed (ISO 8601 UTC). |
walls[].lastSeenstring (ISO 8601) | Last time this item was observed (ISO 8601 UTC). |
walls[].endedAtstring (ISO 8601) · nullable | When it ended (ISO 8601 UTC); null while active. |
walls[].status"active" | "pulled" | "filled" | "gone" | pulled = removed before the price traded into it (not proof of spoofing); filled = the price traded into it while it shrank (consumed or cancelled at the touch); gone = left the observed range. |
walls[].distancePctnumber | Distance from the price when first seen (fraction, 0.01 = 1 %). Deprecated: use distance (same value). |
walls[].minDistancePctnumber | Closest distance to the price (fraction). Deprecated: use minDistance (same value). |
walls[].distancenumber | Distance from the price when first seen, fraction (0.01 = 1 %). |
walls[].minDistancenumber | Closest distance to the price, fraction. |
walls[].touchedAtstring (ISO 8601) · nullable | First time the price traded into the bucket. |
walls[].lifetimeSecinteger | Seconds from first sighting to the end (or the last sighting). |
walls[].history[]array of array | [secondsSinceFirstSeen, usd] at size changes of 20 % or more. |
heatmapobject · nullable | Order book heatmap over time (with ?hours=), else null. |
heatmap.coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
heatmap.venues[]array of "hyperliquid" | "binance" | "bybit" | Venues covered by this view. |
heatmap.times[]array of string (ISO 8601) | Column start times, oldest to newest. |
heatmap.colMsinteger | Column width in milliseconds. |
heatmap.prices[]array of number | Lower edge of each price row, ascending. |
heatmap.rowStepnumber | Price step between rows. |
heatmap.bid[]array of array | bid[timeIndex][priceIndex]: resting bids in USD (rounded to $1,000). |
heatmap.ask[]array of array | Same shape, resting asks. |
heatmap.mid[]array of number | Mid price per column (null without a snapshot). |
heatmap.candlesobject | OHLC of taker trades per column. |
heatmap.candles.o[]array of number | Open price per column (null = no trade). |
heatmap.candles.h[]array of number | High price per column. |
heatmap.candles.l[]array of number | Low price per column. |
heatmap.candles.c[]array of number | Close price per column. |
heatmap.candles.venue"hyperliquid" | "binance" | "bybit" · nullable | Venue of the order-flow data. |
heatmap.maxUsdnumber | Largest cell (USD). |
heatmap.coarse[]array of objects | Coarse layers whose buckets can be wider than a row (each drawn whole in the row of its centre). |
heatmap.coarse[].venue"hyperliquid" | "binance" | "bybit" | Venue of the order-flow data. |
heatmap.coarse[].stepnumber | Price step of the buckets. |
heatmap.updatedAtstring (ISO 8601) · nullable | Newest data time of this item (ISO 8601 UTC). |
Errors
- 400
invalid_paramInvalid parameter - 401
unauthorizedMissing or invalid API key - 403
plan_requiredPlan does not include this - 403
scope_requiredKey not scoped for this API - 403
ip_not_allowedAddress not on the IP allowlist of the key - 403
origin_not_allowedKey used from a browser origin it does not allow - 403
source_restrictedExchange data not redistributed - 403
https_requiredhttps required - 404
not_foundNot found - 429
rate_limitedPer-minute limit reachedretry - 429
daily_limit_exceededDaily limit reachedretry - 429
stream_limitToo many open streamsretry - 500
internal_errorInternal errorretry
Methodology
- Order book walls (how it is computed and its limits)
Code snippets in these docs are licensed under MIT-0: copy them into your own code without attribution. The SDKs, CLI and MCP server will be, once published, Apache-2.0; the name Blockmetric is not licensed (forks must be renamed). Data from the API is governed by the API terms; third-party exchange data by the exchange’s terms.