Contents
Wallet detail
One tracked Hyperliquid wallet: stored account data, current positions (largest first), latest position events (increase / decrease kept 90 days, the other kinds 400 days) and totals.
/api/v1/wallets/{address}Every keyDescription
404 when the wallet is not tracked.
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 |
|---|---|
addressstring · pathrequired | 0x address (40 hex characters, any case). |
limitinteger | Number of position events, default 50, clamped to 1–200.1–200 · default 50 |
Response fields
Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.
| Field | Description |
|---|---|
walletobject | - |
wallet.addressstring | Hyperliquid address, lowercase. |
wallet.labelstring · nullable | Display label: a public label with a cited source, else the self-chosen leaderboard name (unverified). |
wallet.accountValuenumber · nullable | Account value (USD). |
wallet.pnlMonthnumber · nullable | 30-day PnL (leaderboard) (USD). |
wallet.vlmMonthnumber · nullable | 30-day volume (leaderboard) (USD). |
wallet.sourcestring · nullable | How the wallet was found (e.g. hl_leaderboard). |
wallet.priorityinteger | Polling priority (1 = most often). |
wallet.firstSeenstring (ISO 8601) | First time this item was observed (ISO 8601 UTC). |
wallet.lastPolledAtstring (ISO 8601) · nullable | Last time the wallet was read from Hyperliquid (ISO 8601 UTC), null = not yet. |
wallet.positionCountinteger · nullable | Number of open positions. |
positions[]array of objects | Current positions, largest first. |
positions[].addressstring | Hyperliquid address (lowercase), or with venue "lighter" the Lighter account index. |
positions[].labelstring · nullable | Wallet label (public label or leaderboard display name). |
positions[].accountValuenumber · nullable | Account value (USD). |
positions[].coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
positions[].side"long" | "short" | Position side (for liquidations: the side of the liquidated position). |
positions[].sizenumber | Size in coins. |
positions[].entryPxnumber · nullable | Entry price. |
positions[].positionUsdnumber | Notional (USD). |
positions[].leveragenumber · nullable | Leverage of the position (notional / margin). |
positions[].leverageTypestring · nullable | cross | isolated |
positions[].liqPxnumber · nullable | Liquidation price. |
positions[].liqDistancenumber · nullable | Signed distance from the mark to the liquidation price, fraction (−0.12 = 12 % below the mark). |
positions[].marknumber · nullable | Hyperliquid mark price. |
positions[].marginUsednumber · nullable | Margin used (USD). |
positions[].unrealizedPnlnumber · nullable | Unrealised PnL (USD). |
positions[].updatedAtstring (ISO 8601) | Newest data time of this item (ISO 8601 UTC). |
positions[].venue"hyperliquid" | "lighter" | Venue of the position (present for Lighter rows; absent = Hyperliquid). |
events[]array of objects | Latest position events, newest first. |
events[].idinteger | Stable id of the item; on paginated feeds the order key together with ts. |
events[].tsstring (ISO 8601) | Time of the event (ISO 8601 UTC). |
events[].addressstring | Hyperliquid address, lowercase. |
events[].labelstring · nullable | Display label: a public label with a cited source, else the self-chosen leaderboard name (unverified). |
events[].coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
events[].kind"open" | "close" | "increase" | "decrease" | "flip" | "liquidated" | Kind of whale position change (liquidated = confirmed by the wallet’s Hyperliquid liquidation fills). |
events[].side"long" | "short" · nullable | Position side (long / short); for trades and orders the side named in the description. |
events[].sizeDeltanumber · nullable | Change in coins. |
events[].usdDeltanumber · nullable | Change (USD). |
events[].pricenumber · nullable | Price in the quote currency of the venue (USD / USDT / USDC). |
events[].dataany | Kind-specific details (JSON) or null. |
totalsobject | Sums over the rows of this object. |
totals.positionUsdnumber | Open notional (USD). |
totals.longUsdnumber | Long notional (USD). |
totals.shortUsdnumber | Short notional (USD). |
totals.unrealizedPnlnumber | Unrealised PnL summed over the positions that report one (USD). |
totals.unrealizedPnlMissinginteger | Positions without a reported unrealised PnL (left out of unrealizedPnl, not counted as 0). |
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
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.