vike

Open orders

The orders resting on a Hyperliquid perp market at one instant, for a symbol, a wallet or both: limit orders on the book and stops and take-profits waiting to trigger.

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

The orders resting on a Hyperliquid perp market at one instant, for a symbol, a wallet or both: the limit orders on the book and the stop and take-profit orders waiting to trigger. The answer names the instant (snapshotTs) and the feed that produced it (source); how complete it is depends on the feed, which the paragraph "An order is open at an instant" and the first warning explain. Spot books are not included.

cURL
# what one wallet has resting on BTC right now
curl -s "https://data.vike.io/v1/hyperliquid/orders?wallet=0x25773676902085225ae5751075e4161369334897&symbol=BTC&limit=3" \
  -H "X-API-KEY: $VIKE_API_KEY"

# the BTC book: limit orders placed since 10:00 UTC on 27 October
curl -s "https://data.vike.io/v1/hyperliquid/orders?symbol=BTC&order_type=Limit&created_from=2026-10-27T10:00:00Z&limit=3" \
  -H "X-API-KEY: $VIKE_API_KEY"

# the BTC book around 12:00 UTC on 1 September, rebuilt from the 12-minute checkpoints (source is state_12m)
curl -s "https://data.vike.io/v1/hyperliquid/orders?symbol=BTC&at=2026-09-01T12:00:00Z&limit=2" \
  -H "X-API-KEY: $VIKE_API_KEY"

# every trailing stop on BTC
curl -s "https://data.vike.io/v1/hyperliquid/orders?symbol=BTC&order_type=Trailing%20Stop%20Market&limit=2" \
  -H "X-API-KEY: $VIKE_API_KEY"
symbolqueryoptional
HL perp ticker, e.g. BTC or xyz:TSLA. symbol and/or wallet is required
walletqueryoptional
One wallet. symbol and/or wallet is required
atqueryoptional
ISO-8601 UTC, floored to 5 minutes. Default: the newest snapshot. Not before 2026-07-29, not in the future
oidqueryoptional
One order id
order_typequeryoptional
Limit | Stop Market | Stop Limit | Take Profit Market | Take Profit Limit | Trailing Stop Market
created_fromqueryoptional
ISO-8601 UTC. Placed at or after
created_toqueryoptional
ISO-8601 UTC. Placed at or before
limitqueryoptional
Default 100, max 1000
cursorqueryoptional
nextCursor from the previous page, verbatim

Captured from the live API on 2026-10-27 at 10:58 UTC for the first call. Two of the three orders returned are shown.

Example response
{
  "snapshotTs": "2026-10-27T10:55:00+00:00",
  "source": "l4_5m",
  "orders": [
    {
      "oid": 587175313728,
      "wallet": "0x25773676902085225ae5751075e4161369334897",
      "symbol": "BTC",
      "side": "sell",
      "orderType": "Limit",
      "limitPx": 80005.0,
      "triggerPx": null,
      "isTrigger": false,
      "isPositionTpsl": false,
      "reduceOnly": false,
      "tif": "Alo",
      "cloid": "0x342f9fed9b8884e00000000000000000",
      "origSz": 0.10167,
      "sz": 0.10167,
      "placedAt": "2026-10-27T10:54:36.891000+00:00",
      "firstSeen": "2026-10-27T10:55:00+00:00",
      "lastSeen": "2026-10-27T10:55:00+00:00",
      "builder": null,
      "builderFeeTenthsBp": null
    },
    {
      "oid": 587175313730,
      "wallet": "0x25773676902085225ae5751075e4161369334897",
      "symbol": "BTC",
      "side": "sell",
      "orderType": "Limit",
      "limitPx": 80006.0,
      "triggerPx": null,
      "isTrigger": false,
      "isPositionTpsl": false,
      "reduceOnly": false,
      "tif": "Alo",
      "cloid": "0x342f9fed9ba884e00000000000000000",
      "origSz": 0.10167,
      "sz": 0.10167,
      "placedAt": "2026-10-27T10:54:36.891000+00:00",
      "firstSeen": "2026-10-27T10:55:00+00:00",
      "lastSeen": "2026-10-27T10:55:00+00:00",
      "builder": null,
      "builderFeeTenthsBp": null
    }
  ],
  "nextCursor": "eyJhIjoiQlRDIiwiZCI6IkhMIiwiayI6IkJUQ3wweDI1NzczNjc2OTAyMDg1MjI1YWU1NzUxMDc1ZTQxNjEzNjkzMzQ4OTd8fDB8fHwiLCJsNCI6MSwibSI6Im9yZGVycyIsIm8iOjU4NzE3NTMxMzczMiwicSI6IlVTREMiLCJzIjoibDRfNW0iLCJzZCI6LTEsInQiOiIyMDI2LTEwLTI3IDEwOjU1OjAwIn0"
}

Name a symbol, a wallet, or both. A call with neither is a 400: an unfiltered snapshot is the whole book. limit takes 1 to 1000 and defaults to 100; 0 or a negative value also reads as 100, and a value above 1000 is refused with a 422, not clamped. An unknown order_type is a 400 that lists the accepted values. A call costs 1 credit (Rate limits).

orderType is Limit for a resting order, Stop Market or Stop Limit for a stop-loss, Take Profit Market or Take Profit Limit for a take-profit and Trailing Stop Market for a trailing stop; order_type filters on the same six values.

Choose the instant. Without at the answer is the newest snapshot. at is floored to the 5-minute grid. An at from 2026-10-23 21:45 UTC, the first 5-minute snapshot, up to the newest 5-minute snapshot is answered from the 5-minute snapshots (source is l4_5m) and snapshotTs is that snapshot. An earlier at, back to 2026-07-29, is answered from the checkpoints taken about every 12 minutes (source is state_12m). An at newer than the newest snapshot gets the newest. If the 5-minute feed has fallen more than 15 minutes behind the checkpoints, a call without at, and an at after that feed's last snapshot, are answered from the checkpoints (source is state_12m). An at before 2026-07-29 or in the future is a 400. How the two feeds trade places is in Freshness.

An order is open at an instant when it was seen at or before that instant and seen again at or after it. With l4_5m the instant is a snapshot, so every order seen in it is listed, except for an at inside an outage of that feed, which is answered from the sightings on both sides of the gap.

What a row says about the past. An order's sightings are merged into one stored row, so a row is not reliably the order as of a past at. For the newest snapshot sz is the size at that snapshot, except for a whole-position stop or take-profit that has fired and rests as a limit order under the same oid: it reads 0.0, the stored size of its pre-fire sightings. For a past at it can be a later, smaller remaining size than the order had at snapshotTs. limitPx, triggerPx and orderType can come from another sighting of an order that was modified, or whose trigger fired. firstSeen is the order's first sighting and lastSeen its last sighting in the feed that answered (source), so for a past at lastSeen can be later than snapshotTs.

Retention. An order's history is deleted 365 days after the order ended. An order still resting is kept.

Before 2026-10-23 21:45 UTC the answer is rebuilt from checkpoints, not read from a snapshot

Checkpoints are about 12 minutes apart and fall off the 5-minute grid, so on state_12m with a past at, snapshotTs is your at floored to 5 minutes, not a checkpoint instant. An order is listed only if a checkpoint at or before that instant saw it and another at or after it saw it again. An order placed after the earlier checkpoint, or gone before the later one, is missing although it was resting at snapshotTs; short-lived orders, such as quotes replaced within minutes, are the likeliest to be missing. The same holds for an at that falls inside an outage of either feed: it is answered from the sightings on both sides of the gap, and source still reads l4_5m or state_12m.

Rows come in key order, not newest first

Rows are ordered by market (the exchange, then the symbol), then side (sells before buys), then oid, ascending. With one symbol named, the first page of a busy book is the lowest oids of its sell side, in practice the oldest orders, and the buys start only after every sell has been read. To reach recent ones, narrow with created_from and created_to, or read one wallet's orders newest first with /wallets/{address}/orders.

A whole-position stop or take-profit has no size: sz and origSz are null, not 0

An order attached to a whole position (isPositionTpsl: true) has no size of its own until it fires, so sz and origSz are null. A trailing stop has no trigger price until its trail activates, so its triggerPx can read 0.0.

An order that lived between two snapshots is in no /orders answer

Snapshots are 5 minutes apart (the checkpoints about 12), so an order placed and gone between two of them is never listed by this route. /wallets/{address}/orders also lists the orders a wallet's fills prove existed.

builder is null when no 12-minute checkpoint saw the order

builder and builderFeeTenthsBp come from the 12-minute checkpoints only. An order seen only in 5-minute snapshots reads null in both, which does not prove it was placed without a builder.

A cursor belongs to its call

nextCursor pins the snapshot and the query. Page 2 reads page 1's snapshot even when a newer one exists, and a cursor sent with a different symbol, wallet, at, oid, order_type, created_from or created_to is a 400. Pass it back verbatim with those parameters unchanged; limit may change between pages.

Fields are camelCase here, snake_case on order-clusters

This route and /wallets/{address}/orders return snapshotTs, limitPx and nextCursor. /symbols/{symbol}/order-clusters returns snapshot_ts, price_low and n_orders. The names are published as the routes return them.

Example response
{  "snapshotTs": "2026-10-27T10:55:00+00:00",  "source": "l4_5m",  "orders": [    {      "oid": 587175313728,      "wallet": "0x25773676902085225ae5751075e4161369334897",      "symbol": "BTC",      "side": "sell",      "orderType": "Limit",      "limitPx": 80005.0,      "triggerPx": null,      "isTrigger": false,      "isPositionTpsl": false,      "reduceOnly": false,      "tif": "Alo",      "cloid": "0x342f9fed9b8884e00000000000000000",      "origSz": 0.10167,      "sz": 0.10167,      "placedAt": "2026-10-27T10:54:36.891000+00:00",      "firstSeen": "2026-10-27T10:55:00+00:00",      "lastSeen": "2026-10-27T10:55:00+00:00",      "builder": null,      "builderFeeTenthsBp": null    },    {      "oid": 587175313730,      "wallet": "0x25773676902085225ae5751075e4161369334897",      "symbol": "BTC",      "side": "sell",      "orderType": "Limit",      "limitPx": 80006.0,      "triggerPx": null,      "isTrigger": false,      "isPositionTpsl": false,      "reduceOnly": false,      "tif": "Alo",      "cloid": "0x342f9fed9ba884e00000000000000000",      "origSz": 0.10167,      "sz": 0.10167,      "placedAt": "2026-10-27T10:54:36.891000+00:00",      "firstSeen": "2026-10-27T10:55:00+00:00",      "lastSeen": "2026-10-27T10:55:00+00:00",      "builder": null,      "builderFeeTenthsBp": null    }  ],  "nextCursor": "eyJhIjoiQlRDIiwiZCI6IkhMIiwiayI6IkJUQ3wweDI1NzczNjc2OTAyMDg1MjI1YWU1NzUxMDc1ZTQxNjEzNjkzMzQ4OTd8fDB8fHwiLCJsNCI6MSwibSI6Im9yZGVycyIsIm8iOjU4NzE3NTMxMzczMiwicSI6IlVTREMiLCJzIjoibDRfNW0iLCJzZCI6LTEsInQiOiIyMDI2LTEwLTI3IDEwOjU1OjAwIn0"}