Hyperliquid endpoints
Every endpoint under /v1/hyperliquid — per-wallet perp history, positions, builder-code economics, liquidations, candles and the file archive. The largest namespace, and the one whose vocabulary costs the most to get wrong.
31 operations, every one a GET, all under https://data.vike.io/v1/hyperliquid/.
This is the largest namespace in the API by some distance, and the only one with per-wallet
history: who holds what, at what entry, with what realized PnL.
Every path in this namespace is written relative to https://data.vike.io/v1/hyperliquid. The
fenced line at the top of each endpoint's page carries the full path.
Start here
| Task | Endpoint |
|---|---|
| Rank the most profitable wallets this month, with drawdown and Calmar beside PnL | /leaderboard |
| Rank wallets on trading PnL with deposits and withdrawals reported beside it, not inside it | /leaderboard/flow-adjusted |
| Open one wallet: equity, cohort labels, risk metrics, lifetime flow and open positions | /wallets/{address} |
| Read a wallet's closed trades, newest first | /wallets/{address}/trades |
| Find who else holds the same position as a shared position card | /positions/match |
| See where BTC liquidations would cluster if price moved | /symbols/{symbol}/liquidation-heatmap |
| Find which front-end earns the most builder-code fees | /builders |
| Pull Hyperliquid candles for a backtest | /ohlcv |
| Get the newest 1-minute candle of every symbol in one call | /ohlcv/latest |
| Pull hourly close, open interest, funding and premium for a basket of assets | /symbols/hourly |
| Download a whole day of fills or 5-minute position snapshots as Parquet | /archive/url |
Positioning grouped by cohort — the ladders, one cohort's history, the coin × cohort board and the per-symbol cohort series — is its own namespace, HL Cohorts.
What it looks like in use
# find: who earned the most realized PnL in 30 days, among wallets with at least 50 trades
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?window=30d&min_trades=50&limit=5" \
-H "X-API-KEY: $VIKE_API_KEY"
# drill in: WALLET is a wallet value from that board; equity, cohort labels and risk metrics in one call
curl -s "https://data.vike.io/v1/hyperliquid/wallets/$WALLET?window=30d" \
-H "X-API-KEY: $VIKE_API_KEY"
# what it holds right now
curl -s "https://data.vike.io/v1/hyperliquid/positions?wallet=$WALLET&limit=100" \
-H "X-API-KEY: $VIKE_API_KEY"
# how it got there: closed BTC trades, newest first
curl -s "https://data.vike.io/v1/hyperliquid/wallets/$WALLET/trades?symbol=BTC&limit=100" \
-H "X-API-KEY: $VIKE_API_KEY"
# page through: NEXT is the previous response's nextCursor, passed back verbatim
curl -s "https://data.vike.io/v1/hyperliquid/wallets/$WALLET/trades?symbol=BTC&limit=100&cursor=$NEXT" \
-H "X-API-KEY: $VIKE_API_KEY"Before you call anything
Auth. X-API-Key: vk_... or Authorization: Bearer vk_oat_...; either alone is enough. See
Authentication. Every call spends one unit of the shared hourly counter —
see Rate limits.
Errors. Every route in this namespace maps failures the same way: input the service rejected is a 400, an upstream data failure is a 503, and a rate-limit trip is a 429. A failure is never reported as a 200 with an empty body — a silent empty list is indistinguishable from "no data", which is how bad backfills get built on top of an outage. See Errors.
Pagination is keyset, not offset. The position-snapshot history is 7.3 billion rows and the
fill history 1.07 billion; an offset re-reads and discards every skipped row, so deep pages cost
linearly more and a concurrent insert shifts rows across page boundaries. Every list route returns
nextCursor — pass it back verbatim, do not construct one.
Aggregates are snapped to a canonical precision before they leave. A large floating-point sum is not reproduced bit-for-bit run to run, so without that step two identical requests could come back differing in their last digits. Snapping them is what makes a response safe to cache, diff or content-address.
Where a documented bound and the real one disagree, the real one wins
Two routes in this namespace advertise a bound that the service then clamps harder:
/traders documents size up to 100 and caps it at 20, and
/positions/match documents limit up to 500 and
caps it at 50. Both are noted on their own pages. A request above the effective cap is not
rejected — it is silently served at the cap.
The cohort vocabulary
axis and cohort recur across this namespace as a filter: /positions, /leaderboard and /liquidations/risk take them to narrow their rows to one cohort. The routes grouped by cohort are HL Cohorts. Cohorts and axes defines the ladders and Label basis says when a label was computed. Read both before hard-coding a bucket name.
Wallets
Seven routes. {address} is a Hyperliquid wallet address.
| Path | What it answers |
|---|---|
/wallets/{address} | One wallet in one call: equity, its cohort labels on each ladder, the risk-metric set, lifetime external flow and the open-positions block. |
/wallets/{address}/trades | Closed round-trip trades for one wallet, newest first, cursor-paged. |
/wallets/{address}/trades/summary | Trade statistics for one wallet, overall and per coin. |
/wallets/{address}/fills | Raw fills — the level below round-trip trades. |
/wallets/{address}/funding | Funding paid and received by one wallet. |
/wallets/{address}/ledger | Deposits, withdrawals, transfers and vault events. |
/wallets/{address}/builders | Reverse lookup: which builders this wallet's flow is routed through. |
Builders
A builder is a front-end or bot that attaches its address to an order and is paid a slice of the taker fee for it. Six routes over builder-routed fills.
Three fee columns, none interchangeable
fee_usd is the builder's own revenue. trader_fee_usd is the total the trader paid.
builder_routed_deployer_fee_usd is the deployer's cut on builder-routed flow only — a lower
bound on deployer revenue, never the whole of it.
| Path | What it answers |
|---|---|
/builders | The builder-code leaderboard: fee revenue, routed volume, unique traders, fills, market_share_pct. |
/builders/stats | Builder-code economics for the whole venue. |
/builders/{builder} | One builder: window totals plus per-asset and per-dex breakdowns, and an unwindowed lifetime block. |
/builders/{builder}/users | The wallets routing through one builder, ranked. |
/builders/{builder}/fills | Raw builder-routed fills, newest first. |
/builders/{builder}/series | Fee, volume, users and fills per bucket for one builder, newest first. |
Positions
| Path | What it answers |
|---|---|
/positions | Position rows, current or historical. |
/positions/symbols | Market-wide open interest per coin at the latest snapshot, with the venue's own OI alongside our aggregate so the two can be reconciled. |
/positions/match | "Who else is in this trade" — open positions matching a coin/side/leverage/entry profile. |
Leaderboards
| Path | What it answers |
|---|---|
/traders | Top HL perp traders by the requested metric over a window. |
/leaderboard | The trader leaderboard carrying the full risk-metric set — drawdown, Calmar, recovery factor, profit factor, expectancy and streaks beside PnL. |
/leaderboard/flow-adjusted | Ranked on fills-derived realized PnL, with external flow reported beside it. |
Liquidations
Three routes, and they answer two different questions — one realized, two hypothetical.
| Path | What it answers |
|---|---|
/liquidations | What got liquidated: positions that vanished near their liquidation price between two snapshots. |
/symbols/{symbol}/liquidation-heatmap | Where liquidations would cluster if price moved: every open position's own liquidation price, binned and weighted by notional. |
/liquidations/risk | Share of each coin's open interest sitting close to liquidation, optionally for one cohort. |
Ecosystem aggregates
| Path | What it answers |
|---|---|
/stats | Ecosystem time series: perp equity, open interest, position counts. |
/stats/volume | Hourly traded notional and fill count, both sides of every trade — the whole venue, or one coin. |
/hype/holders | The HYPE holder leaderboard — spot balance plus staked, per wallet. |
/symbols/hourly | Hourly close plus open interest, funding rate and premium, for many assets at once. |
Candles
Three routes, and they are the whole crypto candle surface: Hyperliquid candles, built from the fills our own node sees. There is no second venue's candle route to reconcile the numbers against, so the parameter table and the response envelope on the endpoint's own page are the entire contract.
| Path | What it answers |
|---|---|
/ohlcv | Hyperliquid candles, derived from executed fills. |
/ohlcv/latest | The newest 1-minute candle of every symbol that traded in the last hour, in one request. |
/ohlcv/export | Streams the same single page as NDJSON. |
File archive
Two routes, and they are the only way to get a full Parquet file: one asks which days exist, the other turns a day into a
temporary download link. A file is one UTC day of fills or of 5-minute positions snapshots from 2026-05-01, or the
current open positions of every asset (latest). No daily or latest file is reachable by a permanent URL; the free samples are.
Download the Hyperliquid file archive is the walkthrough.
| Path | What it answers |
|---|---|
/archive/datasets | The index: every published day with its rows and bytes, the snapshot count of each positions day, the column schema, the latest file and samples_base, the address of the free samples. |
/archive/url | A link to one file that needs no key, names that file only and is accepted for 300 seconds. |
Related
- Data MCP server —
hl_perp_top_tradersandhl_position_matchrun the same code as/tradersand/positions/match, agent-shaped. - Hyperliquid MCP tools — cohorts, wallets, leaderboards, liquidations, market structure and builders as tools. Each view of each tool calls the query function of the route it mirrors, with that route's defaults and caps, and bills what the route bills.
- Download the Hyperliquid file archive — ask for a link, download a day of fills or positions, read it locally.
- Rate limits — the shared hourly counter these calls spend.
- Errors — the status codes and the error envelope.