Recipe 30 of 65
How healthy is Hyperliquid: total perp equity, open interest and OI-to-equity over time?
/v1/hyperliquid/stats returns one row per hour with total perp equity, open interest and position counts; divide open_interest by total_perp_equity for the ratio.
GET /v1/hyperliquid/stats answers it in one call, as the venue-wide hourly series, newest hour first: total_perp_equity (the summed perp
account value of the wallets in that hour's snapshot), open_interest with its long and short halves, and counts of
wallets, open positions, longs, shorts and positions in profit. OI-to-equity is open_interest / total_perp_equity.
One request returns up to 5,000 hours. The full parameter list is on Exchange stats.
Quick answer
Ask for 720 hours, the last 30 days.
# the last 30 days, one row per hour, newest first
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats?limit=720"Example response
Captured from the live API on 2026-10-24 at 17:15 UTC with limit=3, all 3 rows.
At 16:00 UTC the snapshot covered 139,474 wallets with $2.357B of perp equity, holding 424,653 open positions worth
$14.99B, so open interest was 6.4 times equity. Money fields are USD. open_interest_long and open_interest_short
match to within 0.2%, as they must on a perp venue. 44.6% of open positions were in profit.
{
"metrics": [
{
"ts": "2026-10-24T16:00:00+00:00",
"total_perp_equity": 2357161300.8425837,
"count_wallets": 139474,
"count_open_positions": 424653,
"count_long": 264212,
"count_short": 160441,
"open_interest": 14991368704.020145,
"open_interest_long": 7501345686.3248415,
"open_interest_short": 7490023017.6951275,
"count_positions_in_profit": 189203
},
{
"ts": "2026-10-24T15:00:00+00:00",
"total_perp_equity": 2334500922.9443226,
"count_wallets": 142744,
"count_open_positions": 431857,
"count_long": 269994,
"count_short": 161863,
"open_interest": 15074530569.213669,
"open_interest_long": 7556740796.456791,
"open_interest_short": 7517789772.757811,
"count_positions_in_profit": 189501
},
{
"ts": "2026-10-24T14:00:00+00:00",
"total_perp_equity": 2334572247.332842,
"count_wallets": 144766,
"count_open_positions": 436558,
"count_long": 274336,
"count_short": 162222,
"open_interest": 15202968802.400616,
"open_interest_long": 7644936126.589429,
"open_interest_short": 7558032675.811389,
"count_positions_in_profit": 190876
}
],
"nextCursor": "eyJ0cyI6IjIwMjYtMTAtMjQgMTQ6MDA6MDAifQ"
}Variations
A pinned month. start only narrows a window that reaches limit hours back from end, so size limit to the range.
# every hour of September 2026
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats?start=2026-09-01T00:00:00Z&end=2026-09-30T23:59:59Z&limit=720"The ratio in one step. Divide on your side, hour by hour.
# OI-to-equity and the share of positions in profit, hour by hour
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats?limit=168" \
| jq '.metrics[] | {ts, oi_to_equity: (.open_interest / .total_perp_equity), in_profit: (.count_positions_in_profit / .count_open_positions)}'Older hours. Follow nextCursor.
# NEXT is the previous response's nextCursor: the 720 hours before the last row returned
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/stats?limit=720&cursor=$NEXT"Per coin, beside the venue's own figure. Open interest by coin at the latest snapshot.
# open interest per coin now, with the venue's published open interest beside it
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/positions/symbols"Before you rely on it
The two sides of the ratio do not cover the same accounts
open_interest adds long and short notional over every market, builder-dex markets included. total_perp_equity
is the main-venue perp account value of the wallets in the hour's snapshot, which leaves out builder-dex accounts.
Builder-dex markets were 26% of open interest in the per-coin capture of the same minute, so the ratio overstates
main-venue leverage, and a jump in it can be a builder-dex move. Compare it with itself over time.
Hours, about an hour behind
Each row is one hour; the newest row is the last hour already counted in full, so the capture at 17:15 UTC ended
at 16:00. Without start the window is limit hours back from the newest hour (default 500, at most 5,000).
Ask your agent
No MCP tool serves the venue-wide hourly series; an agent that can make HTTP calls can run the Quick answer call as it stands.