Contents
Cluster hit rates (scoreboard)
The cluster scoreboard: how often big liquidation clusters of the tracked Hyperliquid positions were reached by the price within 4, 24 and 72 hours, per coin (first row ALL = every coin), with the number of scored clusters, the median time to the touch and the median distance.
/api/v1/scoreboardEvery keyDescription
A cluster counts for a horizon only once it is at least that old. With coin: also the big clusters of its liquidation map now (same rule as the observations: within 15 % of the mark, the 3 largest buckets of at least $5M) and, for each, how often past clusters of the same coin, side and distance band (0 to 1 %, 1 to 2 %, 2 to 3 %, 3 to 5 %, 5 to 10 %, 10 to 15 %) were reached: n, reached, rate and a 95 % Wilson interval. Below 10 scored clusters there is no rate (only reached of n), below 30 small: true; when the coin has fewer than 10 at 24 hours, scope all_coins uses the same side and band over every coin. Real computed statistics from our stored observations (method); a lower bound, because wicks between two 30-second price samples are not seen. Past results do not predict prices.
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 | Optional: one coin, with the hit rates of its current clusters. |
limitinteger | Number of items, default 50, clamped to 1–500.1–500 · default 50 |
Response fields
Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.
| Field | Description |
|---|---|
methodstring | How clusters are recorded and scored. |
rulesobject | The fixed rules behind the numbers. |
rules.minUsdnumber | Smallest recorded cluster (USD). |
rules.topNinteger | Clusters recorded per coin and side at most (the largest buckets). |
rules.rangePctnumber | Clusters within this many percent of the mark are recorded. |
rules.repeatHoursinteger | The same bucket is recorded at most once per this many hours. |
rules.horizons[]array of integer | Horizons in hours. |
rules.minSampleinteger | Below this many scored clusters no rate is given. |
rules.smallSampleinteger | Below this many scored clusters a rate is flagged small. |
rules.distanceBands[]array of string | Distance bands of the comparison (percent from the mark to the near edge). |
coins[]array of objects | Per coin, most scored clusters first (ALL first without coin). |
coins[].coinstring | Coin, or ALL for every coin. |
coins[].sincestring (ISO 8601) · nullable | First observation. |
coins[].horizons[]array of objects | One entry per horizon (4, 24, 72 hours). |
coins[].horizons[].horizonHoursinteger | Horizon in hours. |
coins[].horizons[].clustersinteger | Scored clusters (observed at least the horizon ago). |
coins[].horizons[].reachedinteger | Of those, touched by the price within the horizon. |
coins[].horizons[].hitRatenumber · nullable | reached / clusters (fraction). |
coins[].horizons[].medianMinutesToReachnumber · nullable | Median minutes to the touch over the reached ones. |
coins[].horizons[].medianDistancePctnumber · nullable | Median distance from the mark in percent. |
currentobject · nullable | With coin: the big clusters of its liquidation map now and how often similar past ones were reached; null without coin. |
current.coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
current.marknumber · nullable | Hyperliquid mark now. |
current.mapUpdatedAtstring (ISO 8601) · nullable | Time of the current liquidation map. |
current.clusters[]array of objects | The big clusters of the liquidation map now (same rule as the recorded ones). |
current.clusters[].side"long" | "short" | Position side (for liquidations: the side of the liquidated position). |
current.clusters[].bucketPxnumber | Lower edge of the bucket (USD). |
current.clusters[].bucketTopnumber | Upper edge of the bucket (USD). |
current.clusters[].usdnumber | Liquidations in the bucket (USD). |
current.clusters[].positionsinteger | Tracked positions in the bucket. |
current.clusters[].distancePctnumber | Percent from the mark to the near edge of the bucket. |
current.clusters[].rankinteger | 1 = the largest of its coin now. |
current.clusters[].distanceBandstring | Distance band of the comparison. |
current.clusters[].scope"coin" | "all_coins" | coin = past clusters of this coin; all_coins = this coin had fewer than minSample scored at 24 hours, so every coin (same side and band). |
current.clusters[].horizons[]array of objects | How often past clusters like it were reached, per horizon. |
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 - 429
rate_limitedPer-minute limit reachedretry - 429
daily_limit_exceededDaily limit reachedretry - 429
stream_limitToo many open streamsretry - 500
internal_errorInternal errorretry
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.