API EndpointsHyperliquid
/positions
Position rows, current or historical.
GET https://data.vike.io/v1/hyperliquid/positionsPosition rows, current or historical.
# current open BTC positions
curl -s "https://data.vike.io/v1/hyperliquid/positions?coin=BTC&limit=3" \
-H "X-API-KEY: $VIKE_API_KEY"
# next page of the call just above: NEXT is its nextCursor, passed back verbatim; current-mode
# pages are ordered by wallet, address by address, not by size
curl -s "https://data.vike.io/v1/hyperliquid/positions?coin=BTC&limit=3&cursor=$NEXT" \
-H "X-API-KEY: $VIKE_API_KEY"
# everything one wallet holds right now
curl -s "https://data.vike.io/v1/hyperliquid/positions?wallet=0x25773676902085225ae5751075e4161369334897&limit=200" \
-H "X-API-KEY: $VIKE_API_KEY"
# who among the smart-money band is positioned in BTC now, by slug
curl -s "https://data.vike.io/v1/hyperliquid/positions?coin=BTC&axis=pnl&cohort=3x_smart&limit=100" \
-H "X-API-KEY: $VIKE_API_KEY"
# one wallet's BTC history over six hours: time bounds switch to the snapshot table, so bound it by coin or wallet
curl -s "https://data.vike.io/v1/hyperliquid/positions?coin=BTC&wallet=0x25773676902085225ae5751075e4161369334897&start=2026-09-01T00:00:00Z&end=2026-09-01T06:00:00Z&limit=500" \
-H "X-API-KEY: $VIKE_API_KEY"
# a historical cohort filter must come with coin or wallet; labels are point-in-time
curl -s "https://data.vike.io/v1/hyperliquid/positions?coin=BTC&axis=pnl&cohort=3x_smart&start=2026-08-20T00:00:00Z&end=2026-08-20T01:00:00Z&limit=1000" \
-H "X-API-KEY: $VIKE_API_KEY"coinqueryoptionalHL coin ticker, e.g.
BTCwalletqueryoptionalOne wallet
cohortqueryoptionalOne label on
axisaxisqueryoptionalsize | pnl | pnl_abs. Default sizeopen_onlyqueryoptionalBoolean, default
true. Latest open positions onlystartqueryoptionalISO-8601 UTC. Setting either switches to history
endqueryoptionalISO-8601 UTC. Setting either switches to history
limitqueryoptionalDefault 100, max 5000
cursorqueryoptionalKeyset cursor
{
"positions": [
{
"wallet": "0x0000000000bdc2fd416def2d8688069052eb0f87",
"asset": "BTC",
"direction": "long",
"size_token": 0.00553,
"size_usd": 429.7363,
"entry_price": 69452.7555153707,
"mark_price": 77710.0,
"liquidation_price": 0.0,
"unrealized_pnl": 45.662561999999994,
"leverage": 0.0,
"leverage_type": "cross",
"margin_used": 429.7363,
"size_cohort": "shrimp",
"pnl_cohort": "rekt",
"pnl_abs_cohort": "-$10k-$0",
"liq_progress": 0.0,
"dex_name": "HL",
"snapshot_ts": "2026-09-03T07:59:00+00:00",
"pnl_cohort_as_of": null,
"pnl_cohort_basis": "current",
"opened_at": "2026-04-02T08:36:00+00:00"
},
{
"wallet": "0x0000005178d55139ba21423218ea7290a7ccdc81",
"asset": "BTC",
"direction": "long",
"size_token": 0.00467,
"size_usd": 362.90569999999997,
"entry_price": 78001.6773019272,
"mark_price": 77710.0,
"liquidation_price": 77064.4662131028,
"unrealized_pnl": -1.362132999999992,
"leverage": 40.0,
"leverage_type": "isolated",
"margin_used": 9.072642499999999,
"size_cohort": "shrimp",
"pnl_cohort": "3x loser",
"pnl_abs_cohort": "-$10k-$0",
"liq_progress": 0.31121836415002746,
"dex_name": "HL",
"snapshot_ts": "2026-09-03T07:59:00+00:00",
"pnl_cohort_as_of": null,
"pnl_cohort_basis": "current",
"opened_at": "2026-04-02T08:36:00+00:00"
},
{
"wallet": "0x0000fb4e763a5a617e12930c67877e9d25fcf460",
"asset": "BTC",
"direction": "long",
"size_token": 1.6409,
"size_usd": 127514.339,
"entry_price": 63987.60771101226,
"mark_price": 77710.0,
"liquidation_price": 52473.2111772561,
"unrealized_pnl": 22517.073506999986,
"leverage": 5.0,
"leverage_type": "isolated",
"margin_used": 25502.8678,
"size_cohort": "2x fish",
"pnl_cohort": "2x smart",
"pnl_abs_cohort": "$0-$10k",
"liq_progress": 0.0,
"dex_name": "HL",
"snapshot_ts": "2026-09-03T07:59:00+00:00",
"pnl_cohort_as_of": null,
"pnl_cohort_basis": "current",
"opened_at": "2026-04-10T12:37:00+00:00"
}
],
"nextCursor": "eyJhIjoiQlRDIiwiZCI6MSwibSI6ImxhdGVzdCIsInQiOiIyMDI2LTA5LTAzIDA3OjU5OjAwIiwidyI6IjB4MDAwMGZiNGU3NjNhNWE2MTdlMTI5MzBjNjc4NzdlOWQyNWZjZjQ2MCJ9",
"label_computed": {
"grading": "realized",
"label_basis": "current",
"when": "at query time",
"lookahead": false,
"resolution": "none — one label per wallet, today's",
"source": "live wallet realized-PnL ladder",
"detail": "Current mode serves the latest snapshot labelled with the live dictionary: the label and the row describe the same instant, so a live row labelled live has nothing to look ahead over. The same dictionary applied to a HISTORICAL row would be lookahead, which is why historical mode reads the hourly point-in-time labels instead."
}
}Passing start or end changes which table answers
open_only=true reads the latest-state
table; a time bound switches to the historical snapshot table, which is 8.7 billion rows —
bound it by coin or wallet, or expect it to be slow.
A historical pnl or pnl_abs cohort filter requires coin or wallet
A historical pnl or pnl_abs cohort filter must come with coin or wallet, because it is
answered from the same hourly label table.
Every row declares its own label provenance; Label basis says how to read it.