vike

Recipe 28 of 65

Which wallet is behind this Hyperliquid PnL share card?

Pass the card's coin, side, leverage and entry price to /v1/hyperliquid/positions/match; it returns the open positions that fit, closest entry first.

GET /v1/hyperliquid/positions/match answers it in one call. A share card shows a coin, a side, a leverage and an entry price; the route takes those four values and returns the open positions that fit, with the wallet address, size, mark, liquidation price and unrealized PnL. It tries a tight entry band first and widens only when nothing matches, and it says which band it used. When the position is already closed, search the position history instead (the last variation). The full parameter list is on Find a position.

Quick answer

Pass the four values printed on the card.

cURL
# who holds a 5x BTC short entered at 76,327.4
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/match?symbol=BTC&side=short&leverage=5&entry_price=76327.4&limit=3"

Example response

Captured from the live API on 2026-10-24 at 17:15 UTC, all 3 rows.

tolerance_used: "tight" means every match is within 0.05% of the entry you gave. entry_dist_pct is the distance in percent, so 0.0021 is 0.0021%. The first match is a $211.7M short whose entry rounds to the card's value; the other two are small positions that happen to sit a few dollars away. snapshot_ts is epoch seconds.

Example response
{
  "matches": [
    {
      "address": "0x5b5d51203a0f9079f8aeb098a6523a13f298c060",
      "symbol": "BTC",
      "side": "short",
      "snapshot_ts": 1792861620,
      "size_token": 2637.9539,
      "size_usd": 211722443.80939,
      "entry_price": 76327.4353021245,
      "mark_price": 80260.1,
      "leverage": 5.0,
      "liquidation_price": 145332.3757904606,
      "unrealized_pnl": -10374188.177153,
      "entry_dist_pct": 0.0
    },
    {
      "address": "0x0922b44805cb5d90f35f3b9781aff83b47d722d3",
      "symbol": "BTC",
      "side": "short",
      "snapshot_ts": 1792861620,
      "size_token": 0.005,
      "size_usd": 401.30050000000006,
      "entry_price": 76329.0,
      "mark_price": 80260.1,
      "leverage": 5.0,
      "liquidation_price": 91181.3135802469,
      "unrealized_pnl": -19.65550000000003,
      "entry_dist_pct": 0.0021
    },
    {
      "address": "0x47a4e1476d9e509d4f015b8c8624956090ee80d0",
      "symbol": "BTC",
      "side": "short",
      "snapshot_ts": 1792861620,
      "size_token": 0.00181,
      "size_usd": 145.270781,
      "entry_price": 76325.0,
      "mark_price": 80260.1,
      "leverage": 5.0,
      "liquidation_price": 91695.5290907851,
      "unrealized_pnl": -7.12253100000001,
      "entry_dist_pct": 0.0031
    }
  ],
  "match_count": 3,
  "tolerance_used": "tight",
  "query": {
    "symbol": "BTC",
    "side": "short",
    "leverage": 5.0,
    "entry_price": 76327.4,
    "mark_price_hint": 76327.4
  }
}

Variations

Break ties with the card's mark price. When several wallets share an entry, the mark price printed on the card ranks them.

cURL — with mark price
# the same card, ranked by the mark price it shows as a tie-break
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/match?symbol=BTC&side=short&leverage=5&entry_price=76327.4&mark_price=80260.1&limit=10"

Every candidate. Raise limit to 50, the most the route returns.

cURL — 50 matches
# up to 50 matches, the most the route returns
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions/match?symbol=BTC&side=short&leverage=5&entry_price=76327.4&limit=50"

The position is closed: search the history. A card shared after the trade closed matches nothing live. Read the coin's hourly position history around the day the card was posted and apply the same test yourself: same side, leverage within 0.5, entry within 0.05%.

cURL — history search
# BTC positions hour by hour on 2026-10-20, kept when they fit the card
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions?symbol=BTC&start=2026-10-20T00:00:00Z&end=2026-10-21T00:00:00Z&resolution=1h&limit=5000" \
  | jq '[.positions[] | select(.direction == "short" and .leverage >= 4.5 and .leverage <= 5.5 and .entry_price >= 76289.2 and .entry_price <= 76365.6) | {wallet, snapshot_ts, size_usd, entry_price}] | unique_by(.wallet)'

Before you rely on it

Only positions open in the last 15 minutes

The match reads the newest snapshots only: positions seen within 15 minutes of the latest batch. The entry band widens from 0.05% to 0.5% to 1%, and tolerance_used names the band, or no_match. Leverage must be within 0.5 of the card's; a cross-margin row with no leverage recorded reads 0 and never matches (4 of the 20 biggest BTC positions on 2026-10-24). A symbol with lower-case letters, such as xyz:TSLA or kPEPE, is upper-cased before the lookup and finds nothing here; search its history instead. limit is served at most 50.

The history search is yours to filter

Position history comes in key order, not by size, and has no side, leverage or entry filter, so you page through every row of the window and filter it yourself (follow nextCursor; a day of BTC is many pages). Hourly rows are the last snapshot of each hour, so a position that lived less than an hour can be missed. History starts on 2026-05-01.

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_position_match tool answers with the card's four values, at 2 credits a call.

Ask your agent
Whose Hyperliquid share card is this: BTC short, 5x, entry 76,327.4?
Example response
{  "matches": [    {      "address": "0x5b5d51203a0f9079f8aeb098a6523a13f298c060",      "symbol": "BTC",      "side": "short",      "snapshot_ts": 1792861620,      "size_token": 2637.9539,      "size_usd": 211722443.80939,      "entry_price": 76327.4353021245,      "mark_price": 80260.1,      "leverage": 5.0,      "liquidation_price": 145332.3757904606,      "unrealized_pnl": -10374188.177153,      "entry_dist_pct": 0.0    },    {      "address": "0x0922b44805cb5d90f35f3b9781aff83b47d722d3",      "symbol": "BTC",      "side": "short",      "snapshot_ts": 1792861620,      "size_token": 0.005,      "size_usd": 401.30050000000006,      "entry_price": 76329.0,      "mark_price": 80260.1,      "leverage": 5.0,      "liquidation_price": 91181.3135802469,      "unrealized_pnl": -19.65550000000003,      "entry_dist_pct": 0.0021    },    {      "address": "0x47a4e1476d9e509d4f015b8c8624956090ee80d0",      "symbol": "BTC",      "side": "short",      "snapshot_ts": 1792861620,      "size_token": 0.00181,      "size_usd": 145.270781,      "entry_price": 76325.0,      "mark_price": 80260.1,      "leverage": 5.0,      "liquidation_price": 91695.5290907851,      "unrealized_pnl": -7.12253100000001,      "entry_dist_pct": 0.0031    }  ],  "match_count": 3,  "tolerance_used": "tight",  "query": {    "symbol": "BTC",    "side": "short",    "leverage": 5.0,    "entry_price": 76327.4,    "mark_price_hint": 76327.4  }}