vike
API EndpointsHyperliquid

Hyperliquid REST

Every endpoint under /v1/hyperliquid — per-wallet perp history, cohort positioning, builder-code economics, liquidations and candles. The largest namespace, and the one whose vocabulary costs the most to get wrong.

35 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
Chart how whales and smart money are positioned on BTC by the hour/coins/{coin}/cohort-metrics
Find who else holds the same position as a shared position card/positions/match
See where BTC liquidations would cluster if price moved/coins/{coin}/liquidation-heatmap
Find which front-end earns the most builder-code fees/builders
Pull Hyperliquid candles for a backtest/ohlcv
Pull hourly close, open interest, funding and premium for a basket of assets/assets/hourly

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?coin=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?coin=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

Four query parameters recur across this namespace: axis, cohort, labelBasis and grading. 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.

Cohorts and segments

Three self-describing routes. Read these before hard-coding any bucket name.

PathWhat it answers
/cohortsThe canonical cohort ladders as flat label sets — the exact strings ?cohort= accepts.
/segmentsThe detailed catalogue: every bucket on every axis with its boundaries, slug, rank, basis and a groupable flag.
/segments/{cohort}/summaryAggregate positioning for one cohort at the latest snapshot.

Coins

Hourly positioning series for one coin. {coin} is an HL coin ticker such as BTC.

PathWhat it answers
/coins/{coin}/metricsHourly open-interest / position-count / bias series for one coin, optionally sliced to a single cohort.
/coins/{coin}/cohort-metricsThe full cohort matrix for one coin — every bucket on an axis, hourly.
/coins/{coin}/size-breakdownPositioning for one coin split by the canonical ten position-size buckets.

Positions

PathWhat it answers
/positionsPosition rows, current or historical.
/positions/coinsMarket-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
/liquidationsRealized liquidation fills — what actually got liquidated.
/coins/{coin}/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 perp volume — the whole venue, or one coin.
/hype/holdersThe HYPE holder leaderboard — spot balance plus staked, per wallet.
/heatmapThe coin × cohort positioning matrix — the whole board in one call.
/assets/hourlyHourly close plus open interest, funding rate and premium, for many assets at once.

Candles

Two 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/exportStreams the same single page as NDJSON.

On this page