Contents
Whale leaderboard
Whale leaderboard of tracked Hyperliquid wallets with public labels (label + labelSource URL; otherwise the self-chosen leaderboard name), open notional, PnL, largest position with liquidation distance and the number of fill-confirmed liquidations.
/api/v1/whalesEvery keyDescription
venue=lighter: tracked Lighter accounts (address = account index, l1Address, the self-chosen account name as label; sort size or pnl; liquidations null: not attributed per account).
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 |
|---|---|
sortstring | size (open notional, default) | pnl (all-time PnL) | near_liq (closest liquidation of a position ≥ $100k) | liquidated (most fill-confirmed liquidations).one of size, pnl, near_liq, liquidated · default size |
coinstring | Only wallets with a position in this coin (sort=liquidated: liquidations in this coin). |
labelledboolean | true = only wallets with a public label from a cited source; default false.one of true, false · default false |
limitinteger | Number of items, default 50, clamped to 1–500.1–500 · default 50 |
venuestring | hyperliquid (default, the Hyperliquid answer as before) | lighter (tracked Lighter accounts: address = the Lighter account index, venue = "lighter", liqPx as the exchange reports it). A switched-off venue answers 400.one of hyperliquid, lighter · default hyperliquid |
fieldsstring | Comma-separated fields of every item to return, e.g. address,label,accountValue,positionsUsd (case-insensitive). All other fields are left out, so large lists get much smaller; an unknown name answers 400 with the list of fields. Default: every field. |
formatstring | json (default: the { data, meta } envelope) | csv (the rows with a header line; nested values as JSON text) | ndjson (one JSON object per row and line). csv and ndjson carry the meta block in headers: Link rel="next" and X-Blockmetric-Next-Cursor (next page), X-Blockmetric-Next-After (forward polling), X-Blockmetric-Updated-At, X-Blockmetric-Warnings, X-Blockmetric-License. Errors stay JSON.one of json, csv, ndjson · default json |
Response fields
Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.
| Field | Description |
|---|---|
[].addressstring | Hyperliquid address (lowercase), or with venue "lighter" the Lighter account index. |
[].labelstring · nullable | Public label, else the self-chosen leaderboard name. |
[].labelSourcestring · nullable | Source URL of a public label, or "hyperliquid-leaderboard" (unverified). |
[].accountValuenumber · nullable | Account value (USD). |
[].pnlMonthnumber · nullable | 30-day PnL (USD). |
[].pnlAllTimenumber · nullable | All-time PnL (USD). |
[].positionsUsdnumber | Open notional (USD). |
[].positionCountinteger | Number of open positions. |
[].topobject · nullable | Largest position. |
[].top.coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
[].top.side"long" | "short" | Position side (for liquidations: the side of the liquidated position). |
[].top.usdnumber | Notional (USD). |
[].top.leveragenumber · nullable | Leverage of the position (notional / margin). |
[].top.liqPxnumber · nullable | Liquidation price of the position. |
[].top.liqDistancenumber · nullable | Signed fraction. |
[].liquidationsinteger · nullable | Fill-confirmed liquidations in the stored history (null for Lighter accounts: liquidations are not attributed per account). |
[].updatedAtstring (ISO 8601) · nullable | Newest data time of this item (ISO 8601 UTC). |
[].venue"hyperliquid" | "lighter" | Venue of the position (present for Lighter rows; absent = Hyperliquid). |
[].l1Addressstring · nullable | Lighter: the account’s Ethereum address. |
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.