vike

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

TaskEndpoint
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

A first session
# 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.

PathWhat 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}/tradesClosed round-trip trades for one wallet, newest first, cursor-paged.
/wallets/{address}/trades/summaryTrade statistics for one wallet, overall and per coin.
/wallets/{address}/fillsRaw fills — the level below round-trip trades.
/wallets/{address}/fundingFunding paid and received by one wallet.
/wallets/{address}/ledgerDeposits, withdrawals, transfers and vault events.
/wallets/{address}/buildersReverse 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.

PathWhat it answers
/buildersThe builder-code leaderboard: fee revenue, routed volume, unique traders, fills, market_share_pct.
/builders/statsBuilder-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}/usersThe wallets routing through one builder, ranked.
/builders/{builder}/fillsRaw builder-routed fills, newest first.
/builders/{builder}/seriesFee, volume, users and fills per bucket for one builder, newest first.

Positions

PathWhat it answers
/positionsPosition rows, current or historical.
/positions/symbolsMarket-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

PathWhat it answers
/tradersTop HL perp traders by the requested metric over a window.
/leaderboardThe trader leaderboard carrying the full risk-metric set — drawdown, Calmar, recovery factor, profit factor, expectancy and streaks beside PnL.
/leaderboard/flow-adjustedRanked on fills-derived realized PnL, with external flow reported beside it.

Liquidations

Three routes, and they answer two different questions — one realized, two hypothetical.

PathWhat it answers
/liquidationsWhat got liquidated: positions that vanished near their liquidation price between two snapshots.
/symbols/{symbol}/liquidation-heatmapWhere liquidations would cluster if price moved: every open position's own liquidation price, binned and weighted by notional.
/liquidations/riskShare of each coin's open interest sitting close to liquidation, optionally for one cohort.

Ecosystem aggregates

PathWhat it answers
/statsEcosystem time series: perp equity, open interest, position counts.
/stats/volumeHourly traded notional and fill count, both sides of every trade — the whole venue, or one coin.
/hype/holdersThe HYPE holder leaderboard — spot balance plus staked, per wallet.
/symbols/hourlyHourly 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.

PathWhat it answers
/ohlcvHyperliquid candles, derived from executed fills.
/ohlcv/latestThe newest 1-minute candle of every symbol that traded in the last hour, in one request.
/ohlcv/exportStreams 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.

PathWhat it answers
/archive/datasetsThe 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/urlA link to one file that needs no key, names that file only and is accepted for 300 seconds.

  • Data MCP server — hl_perp_top_traders and hl_position_match run the same code as /traders and /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.

On this page