Contents
Smart-money convergence
Smart-money convergence: events when at least K (default 3) of the top all-time-PnL Hyperliquid wallets (without vaults, market makers by fill counts and turnover, and delta-neutral books) open or add the same side of a coin within the window (default 60 min), plus the current positioning of these wallets and the filter statistics.
/api/v1/smart-moneyEvery keyDescription
Events are delayed for free keys (meta.delayMinutes).
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 | Only this coin (optional). |
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 |
|---|---|
events[]array of objects | Events of this view (newest first) or their count. |
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[].coinstring · nullable | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
events[].severityinteger | 1 info, 2 notable, 3 major, 4 critical. |
events[].titlestring | One-line factual title in our own words. |
events[].side"long" | "short" · nullable | Position side (for liquidations: the side of the liquidated position). |
events[].countinteger · nullable | Wallets that converged. |
events[].usdnumber · nullable | Notional in USD. |
events[].wallets[]array of objects | Number of distinct wallets. |
events[].wallets[].addressstring | Hyperliquid address, lowercase. |
events[].wallets[].usdnumber | Notional in USD. |
events[].wallets[].tsstring (ISO 8601) | Time of the event (ISO 8601 UTC). |
events[].wallets[].lists[]array of "allTime" | "month" | "roi" | Smart-money lists the wallet was on at the time of the event (events from 2026-11-03 on). |
positioning[]array of objects | Open tracked positions of the smart wallets. |
positioning[].coinstring | Coin name as on Hyperliquid (BTC, kPEPE, HIP-3 names like xyz:TSLA). |
positioning[].longUsdnumber | Long notional in USD. |
positioning[].shortUsdnumber | Short notional in USD. |
positioning[].longWalletsinteger | Wallets on the long side. |
positioning[].shortWalletsinteger | Wallets on the short side. |
positioning[].updatedAtstring (ISO 8601) · nullable | Newest poll of these positions. |
walletsinteger | Smart wallets after the filters. |
candidatesinteger | Leaderboard wallets checked from the top of the lists (smart wallets plus excluded ones). |
excludedobject | Excluded wallets per reason. |
excluded.vaultinteger | Hyperliquid vaults (including HLP). |
excluded.many_positionsinteger | Deprecated: use manyPositions (same value). |
excluded.resting_ordersinteger | Deprecated: use restingOrders (same value). |
excluded.high_fillsinteger | Deprecated: use highFills (same value). |
excluded.turnoverinteger | Wallets whose 30-day volume is a large multiple of the account value (market making / HFT). |
excluded.hedgedinteger | Delta-neutral books (long and short notional nearly equal). |
excluded.manyPositionsinteger | Wallets with many open positions (market makers, multi-asset algos). |
excluded.restingOrdersinteger | Wallets with many resting limit orders (a quoted book). |
excluded.highFillsinteger | Wallets with very many fills per hour (market making). |
excluded.notTradinginteger | All-time PnL above 20 × the all-time volume (token holdings, airdrops). |
delayMinutesinteger | Minutes the events are delayed for the caller’s plan (0 = real time). |
settingsobject | Detector settings in force. |
settings.kinteger | Wallets needed for a convergence event. |
settings.windowMinnumber | Window of a convergence in minutes. |
settings.minUsdnumber | Minimum position change per wallet in USD. |
settings.topinteger | All-time PnL list size. |
settings.monthTopinteger | 30-day PnL list size (0 = off). |
settings.monthMinAccountUsdnumber | Lowest account value of the 30-day list (USD). |
settings.monthMinRoinumber | Lowest 30-day ROI as a fraction (0.05 = 5 %). |
settings.roiTopinteger | All-time ROI list size (0 = off). |
settings.roiMinAccountUsdnumber | Lowest account value of the ROI list (USD). |
settings.roiMinPnlUsdnumber | Lowest all-time PnL of the ROI list (USD). |
settings.maxWalletsinteger | Most smart wallets in all. |
methodstring | How the figures are computed, in plain words. |
listsobject | Wallets per list after the filters (a wallet on two lists counts on both). |
lists.allTimeobject | - |
lists.allTime.walletsinteger | Number of distinct wallets. |
lists.allTime.floornumber · nullable | Ranking value of the last wallet on the list: all-time or 30-day PnL in USD, all-time ROI as a fraction. |
lists.monthobject | - |
lists.month.walletsinteger | Number of distinct wallets. |
lists.month.floornumber · nullable | Ranking value of the last wallet on the list: all-time or 30-day PnL in USD, all-time ROI as a fraction. |
lists.roiobject | - |
lists.roi.walletsinteger | Number of distinct wallets. |
lists.roi.floornumber · nullable | Ranking value of the last wallet on the list: all-time or 30-day PnL in USD, all-time ROI as a fraction. |
leaderboardAtstring (ISO 8601) · nullable | Newest Hyperliquid leaderboard run the set is built from. |
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
- Smart money (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.