vike

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.

cURL
# 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.

Example response
{
  "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.

cURL — September
# 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.

cURL — OI to equity
# 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.

cURL — next page
# 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.

cURL — per coin
# 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.

Example response
{  "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"}