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.
# 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.
{
"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.
# 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.
# 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%.
# 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.
Whose Hyperliquid share card is this: BTC short, 5x, entry 76,327.4?