vike

Recipe 31 of 65

Hyperliquid open interest per coin, and how it reconciles with the venue

/v1/hyperliquid/positions/symbols returns every coin's open interest summed from the open positions, with the venue's own published figure beside it.

GET /v1/hyperliquid/positions/symbols answers it in one call. It takes no parameters and returns one row per coin, biggest first: open interest in USD summed from every open position (total_value, split into total_value_long and total_value_short), the number of positions on each side, and venue_open_interest_usd, the figure the venue itself publishes. Dividing one by the other is the reconciliation. The endpoint page is Open interest by coin.

Quick answer

No parameters: one call returns every coin.

cURL
# open interest of every coin at the latest snapshot, biggest first
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/symbols"

Example response

Captured from the live API on 2026-10-24 at 17:15 UTC, trimmed to 3 of 342 rows (BTC, ETH and the biggest builder-dex market).

total_value adds long and short notional, in USD at the mark price. Against the venue's figure it reads 1.006 for BTC and 1.000 for xyz:SP500; over all 342 coins the median ratio was 1.0003 and only one coin was more than 5% apart. count is the number of open positions, not wallets.

Example response
[
  {
    "symbol": "BTC",
    "total_value": 3517530411.0,
    "total_value_long": 1755336015.0,
    "total_value_short": 1762194396.0,
    "count": 40907,
    "count_long": 28271,
    "count_short": 12636,
    "venue_open_interest_usd": 3496304666.0
  },
  {
    "symbol": "ETH",
    "total_value": 2586383300.0,
    "total_value_long": 1293233286.0,
    "total_value_short": 1293150014.0,
    "count": 19432,
    "count_long": 12684,
    "count_short": 6748,
    "venue_open_interest_usd": 2578947159.0
  },
  {
    "symbol": "xyz:SP500",
    "total_value": 388254195.7,
    "total_value_long": 194124773.9,
    "total_value_short": 194129421.8,
    "count": 5513,
    "count_long": 3491,
    "count_short": 2022,
    "venue_open_interest_usd": 388285530.4
  }
]

Variations

The ten biggest books. Keep the first ten rows.

cURL — top 10
# the ten coins with the most open interest, with position counts
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/symbols" \
  | jq '.[:10] | map({symbol, total_value, count})'

The reconciliation, coin by coin. Divide ours by the venue's figure.

cURL — ours over the venue's
# our aggregate over the venue's published open interest, per coin
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/symbols" \
  | jq '.[] | select(.venue_open_interest_usd != null) | {symbol, ratio: (.total_value / .venue_open_interest_usd)}'

Long or short by count. The notional is balanced by construction; the position counts are not.

cURL — head count
# the share of open positions that are longs, per coin
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/symbols" \
  | jq '.[:20] | map({symbol, long_share: (.count_long / .count)})'

Hourly history of one coin. The coin metrics route serves one coin hour by hour.

cURL — one coin over time
# BTC open interest and position count, one row per hour for a week
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hl-cohorts/symbols/BTC/metrics?limit=168"

Before you rely on it

Long and short notional are the same number

Every long is someone's short, so total_value_long and total_value_short are nearly equal on every coin, and total_value is both together. A long-short split of notional says nothing about sentiment; the split of count does (28,271 BTC longs against 12,636 shorts in the capture). For who is on which side, read the cohort routes.

One snapshot, refreshed about every 5 minutes

The rows sum the positions seen within 15 minutes of the newest snapshot, so a position closed in the last few minutes can still count. venue_open_interest_usd is the venue's newest reading in the last hour, and it is null for a coin with no such reading. Builder-dex markets are named dex:TICKER and sit in the same list.

Ask your agent

Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. The hl_market tool answers with view: open_interest, at 1 credit a call.

Ask your agent
What is the open interest of each Hyperliquid coin right now, and does it match the venue's own figure?
Example response
[  {    "symbol": "BTC",    "total_value": 3517530411.0,    "total_value_long": 1755336015.0,    "total_value_short": 1762194396.0,    "count": 40907,    "count_long": 28271,    "count_short": 12636,    "venue_open_interest_usd": 3496304666.0  },  {    "symbol": "ETH",    "total_value": 2586383300.0,    "total_value_long": 1293233286.0,    "total_value_short": 1293150014.0,    "count": 19432,    "count_long": 12684,    "count_short": 6748,    "venue_open_interest_usd": 2578947159.0  },  {    "symbol": "xyz:SP500",    "total_value": 388254195.7,    "total_value_long": 194124773.9,    "total_value_short": 194129421.8,    "count": 5513,    "count_long": 3491,    "count_short": 2022,    "venue_open_interest_usd": 388285530.4  }]