vike

Recipe 4 of 65

Which Hyperliquid positions are closest to liquidation right now?

/liquidations/risk ranks markets by the share of open notional past half of its liquidation buffer, and /positions gives each position's liq_progress, so you can rank positions by how much of the buffer is used up.

GET /v1/hyperliquid/liquidations/risk answers it per market in one call: markets ranked by percent_risk, the share of open notional whose positions have used up more than half of the distance from entry to liquidation. For single positions, GET /v1/hyperliquid/positions with sort=size returns the biggest open positions of one market, each with liquidation_price, mark_price and liq_progress, so you can sort them by closeness yourself. The full parameter lists are on Liquidation risk and Positions.

Quick answer

Start with the market ranking; limit sets how many markets come back.

cURL
# markets ranked by the share of open notional close to liquidation
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/liquidations/risk?limit=5"

Example response

Captured from the live API on 2026-10-24 at 17:15 UTC, trimmed to 3 rows. The legacy asset copy of symbol is left out.

percent_risk is a fraction: 0.507 means 50.7% of the $2.1M open in para:UNITREE sits in positions past half of their liquidation buffer. at_risk_count counts those positions. The top of this list is small builder-deployed markets, not BTC or ETH.

Example response
[
  {
    "symbol": "para:UNITREE",
    "total_value_usd": 2113897.8153999997,
    "risk_value_usd": 1071192.13365,
    "percent_risk": 0.5067378970952316,
    "positions_count": 114,
    "at_risk_count": 9,
    "cohort_axis": "size",
    "cohort": null
  },
  {
    "symbol": "io:NBIS",
    "total_value_usd": 7650584.123199999,
    "risk_value_usd": 3601011.4597,
    "percent_risk": 0.4706845126740218,
    "positions_count": 296,
    "at_risk_count": 51,
    "cohort_axis": "size",
    "cohort": null
  },
  {
    "symbol": "para:GLW",
    "total_value_usd": 789788.5558,
    "risk_value_usd": 370461.34382899996,
    "percent_risk": 0.4690639552933871,
    "positions_count": 40,
    "at_risk_count": 12,
    "cohort_axis": "size",
    "cohort": null
  }
]

Variations

Big markets only. The route has no minimum-size filter, so cut by notional on your side.

cURL — markets over $50M
# the same ranking restricted to markets with at least $50M open
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/liquidations/risk?limit=500" \
  | jq '[.[] | select(.total_value_usd >= 50000000)] | .[:10]'

The positions behind one market, closest first. sort=size returns the biggest open positions of one symbol (at most 500). Sort them by liq_progress.

cURL — BTC positions by closeness
# the 500 biggest BTC positions, re-sorted by how much of the liquidation buffer is used up
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions?symbol=BTC&sort=size&limit=500" \
  | jq '.positions | sort_by(-.liq_progress) | .[:10] | map({wallet, direction, size_usd, entry_price, mark_price, liquidation_price, liq_progress, leverage})'

One account tier. axis and cohort restrict the ranking to one tier, here accounts over $10M.

cURL — 4x whale tier
# the risk ranking for the largest accounts only
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/liquidations/risk?axis=size&cohort=4x_whale&limit=20"

Before you rely on it

liq_progress is buffer used, not distance to liquidation

liq_progress runs from 0 to 1: the share of the entry-to-liquidation distance that the mark price has already covered. A position in profit reads 0, unless a drained cross-margin account has pushed its liquidation price past the entry, and a position with no liquidation price also reads 0. For a distance in percent, compute abs(mark_price - liquidation_price) / mark_price from the same row.

Only the biggest 500 are sorted for you

sort=size stops at 500 positions per symbol, so a small position nearer its liquidation price is not in that list. To scan every open position of a symbol, page /positions?symbol=BTC&limit=5000 with nextCursor; those pages come in wallet order. Rows come from snapshots a few minutes apart, so two rows can carry different mark_price values.

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_liquidations tool answers with view: risk, at 1 credit a call.

Ask your agent
Which Hyperliquid markets have the most open interest close to liquidation right now?
Example response
[  {    "symbol": "para:UNITREE",    "total_value_usd": 2113897.8153999997,    "risk_value_usd": 1071192.13365,    "percent_risk": 0.5067378970952316,    "positions_count": 114,    "at_risk_count": 9,    "cohort_axis": "size",    "cohort": null  },  {    "symbol": "io:NBIS",    "total_value_usd": 7650584.123199999,    "risk_value_usd": 3601011.4597,    "percent_risk": 0.4706845126740218,    "positions_count": 296,    "at_risk_count": 51,    "cohort_axis": "size",    "cohort": null  },  {    "symbol": "para:GLW",    "total_value_usd": 789788.5558,    "risk_value_usd": 370461.34382899996,    "percent_risk": 0.4690639552933871,    "positions_count": 40,    "at_risk_count": 12,    "cohort_axis": "size",    "cohort": null  }]