vike
API EndpointsHyperliquid

/positions

Position rows, current or historical.

GET https://data.vike.io/v1/hyperliquid/positions

Position rows, current or historical.

cURL
# 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"
coinqueryoptional
HL coin ticker, e.g. BTC
walletqueryoptional
One wallet
cohortqueryoptional
One label on axis
axisqueryoptional
size | pnl | pnl_abs. Default size
open_onlyqueryoptional
Boolean, default true. Latest open positions only
startqueryoptional
ISO-8601 UTC. Setting either switches to history
endqueryoptional
ISO-8601 UTC. Setting either switches to history
limitqueryoptional
Default 100, max 5000
cursorqueryoptional
Keyset cursor
Example response
{
  "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.

cURL
# current open BTC positionscurl -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 sizecurl -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 nowcurl -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 slugcurl -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 walletcurl -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-timecurl -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"
Example response
{  "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."  }}