Contents
Cohort positioning
Positioning of tracked Hyperliquid wallets by cohort: size (shrimp < $10K, fish, dolphin, shark, whale ≥ $10M account value) and all-time PnL (top ≥ +$1M, profitable, flat, losing, rekt ≤ −$1M): long / short notional, wallets and long share now, its change over 15m / 1h / 4h / 24h / 3d / 7d (from 5-min snapshots, capped at the plan history), recent position changes with cohorts and the net flow of the last hour.
/api/v1/cohortsEvery keyDescription
Coverage is the wallets this service polls (large wallets far better than small ones).
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 | Coin, or ALL (default) for every position. |
dimstring | size | pnl. With `cohort`: only changes of that cohort.one of size, pnl |
cohortstring | shrimp | fish | dolphin | shark | whale | top | profitable | flat | losing | rekt (needs dim).one of shrimp, fish, dolphin, shark, whale, top, profitable, flat, losing, rekt |
limitinteger | Number of items, default 30, clamped to 1–200.1–200 · default 30 |
Response fields
Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.
| Field | Description |
|---|---|
coinstring | Coin or ALL. |
snapshotAtstring (ISO 8601) · nullable | Newest 5-min snapshot. |
rows[]array of objects | The rows of this view. |
rows[].dim"size" | "pnl" | Cohort dimension: size (account value) or pnl (all-time PnL). |
rows[].cohortstring | Cohort key within its dimension. |
rows[].labelstring | Display label: a public label with a cited source, else the self-chosen leaderboard name (unverified). |
rows[].longUsdnumber | Long notional (USD). |
rows[].shortUsdnumber | Short notional (USD). |
rows[].longWalletsinteger | Wallets on the long side. |
rows[].shortWalletsinteger | Wallets on the short side. |
rows[].longSharenumber · nullable | longUsd / (longUsd + shortUsd). |
rows[].changeobject | Change of longShare against the snapshot that long ago (fraction points); windows beyond the plan history are missing. |
rows[].change.15mnumber · nullable | Change over 15 minutes. |
rows[].change.1hnumber · nullable | Change over 1 hour. |
rows[].change.4hnumber · nullable | Change over 4 hours. |
rows[].change.24hnumber · nullable | Change over 24 hours. |
rows[].change.3dnumber · nullable | Change over 3 days. |
rows[].change.7dnumber · nullable | Change over 7 days. |
sincestring (ISO 8601) · nullable | Oldest snapshot. |
changes[]array of objects | Recent position changes ≥ $50k with cohorts (delayed for free keys). |
changes[].idinteger | Stable id of the item; on paginated feeds the order key together with ts. |
changes[].tsstring (ISO 8601) | Time of the event (ISO 8601 UTC). |
changes[].addressstring | Hyperliquid address, lowercase. |
changes[].coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
changes[].kind"open" | "close" | "increase" | "decrease" | "flip" | "liquidated" | Kind of the item (enum of this field). |
changes[].side"long" | "short" · nullable | Position side (for liquidations: the side of the liquidated position). |
changes[].usdDeltanumber | Signed USD change. |
changes[].pricenumber · nullable | Price in the quote currency of the venue (USD / USDT / USDC). |
changes[].sizeCohort"shrimp" | "fish" | "dolphin" | "shark" | "whale" · nullable | Size cohort by account value: shrimp < $10K, fish, dolphin, shark, whale ≥ $10M. |
changes[].pnlCohort"top" | "profitable" | "flat" | "losing" | "rekt" · nullable | PnL cohort by all-time PnL: top ≥ +$1M, profitable, flat, losing, rekt ≤ −$1M. |
netFlow1h[]array of objects | Net notional added per cohort and side in the last hour. |
netFlow1h[].dim"size" | "pnl" | Cohort dimension: size (account value) or pnl (all-time PnL). |
netFlow1h[].cohortstring | Cohort key within its dimension. |
netFlow1h[].longUsdnumber | Long notional in USD. |
netFlow1h[].shortUsdnumber | Short notional in USD. |
netFlow1h[].eventsinteger | Events of this view (newest first) or their count. |
maxMinutesinteger | Longest trend window of the plan. |
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
Methodology
- Wallet cohorts (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.