On this page
Hyperliquid
Hyperliquid exposes three distinct market surfaces through one Info / Exchange endpoint pair. Artery splits them into two registered providers so capability declarations remain accurate:
| Artery provider | Surfaces |
|---|---|
hyperliquid_perp | Main perpetual futures + HIP-3 builder-deployed perps (TSLA, FX, RWA) |
hyperliquid_hip4 | HIP-4 binary YES/NO outcome markets (the actual prediction markets) |
hyperliquid_dex | HyperEVM swap (separate doc) |
Data source — self-hosted Hyperliquid node
Artery operates its own Hyperliquid non-validator node. The following
/info types are served locally from the node's on-disk fill stream
(zero rate-limit, sub-millisecond latency, immune to upstream outages):
allMids(derived from real-time fills)candleSnapshot(90-day historical window — see historical OHLC below)userFills,userFillsByTimeuserFunding,userNonFundingLedgerUpdatesmeta,spotMeta,clearinghouseState,spotClearinghouseStateopenOrders,subAccounts,delegations
Everything else (l2Book, predictedFundings, etc.) passes through to
api.hyperliquid.xyz transparently. The split is invisible to clients —
all endpoints respond with the same HL-native shape regardless of source.
HIP-3 ≠ Hyperliquid prediction markets. HIP-3 are continuous-price PERPS (TSLA, SP500, FX). The actual prediction markets are HIP-4 outcome markets, launched on mainnet 2026-05-02. Artery may be the first API gateway to aggregate HIP-4 — we ship raw passthrough so HIP-4 schema changes don't block clients.
Asset index encoding
The HL info API uses a single integer asset id with a partitioned namespace:
| Range | Surface |
|---|---|
0..N | Main perps |
10_000 + spotMeta.universe[i].index | Spot pairs |
100_000 + dex_idx*10_000 + idx_in_dex | HIP-3 perps |
100_000_000 + (10*outcome_id + side) | HIP-4 outcomes (side=0 NO, side=1 YES) |
Main perp + HIP-3 endpoints
| Artery | Upstream /info type | Source |
|---|---|---|
GET /v1/hyperliquid/info/meta?dex= | meta | self-hosted |
GET /v1/hyperliquid/info/asset-ctxs?dex= | metaAndAssetCtxs | passthrough |
GET /v1/hyperliquid/info/all-mids?dex= | allMids | self-hosted |
GET /v1/hyperliquid/info/perp-dexs | perpDexs | passthrough |
GET /v1/hyperliquid/info/predicted-fundings | predictedFundings | passthrough |
GET /v1/hyperliquid/info/l2-book?coin= | l2Book | passthrough |
GET /v1/hyperliquid/info/candles | candleSnapshot | self-hosted |
GET /v1/hyperliquid/info/spot-meta | spotMeta | self-hosted |
GET /v1/hyperliquid/info/spot-meta-and-asset-ctxs | spotMetaAndAssetCtxs | official (SWR) |
The dex query param scopes to a HIP-3 dex (flx, xyz, etc.). Omit for
main perp.
info/spot-meta-and-asset-ctxs returns the whole-market spot combo
([spotMeta, spotAssetCtxs[]]) — every spot pair's markPx/midPx/24h in one
wallet-agnostic call, for valuing a whole wallet's spot holdings without N
per-pair requests. It's served from the official API behind a shared
serve-stale cache (the self-hosted node can't serve complete spot prices), the
same cache Artery's own NAV valuation reads — so a client and NAV always see
one spot table. assetCtxs[] aligns to each pair's canonical index, not the
universe[] array position — do not zip by array index (QF-10684).
User account data (self-hosted)
These per-wallet endpoints are served from our local indexer on top of the
Hyperliquid node's --write-fills and --write-misc-events streams.
Schema matches HL's official /info response 1:1 — bring the same
clients you'd use against api.hyperliquid.xyz.
HL /info type | What it returns |
|---|---|
userFills | Most recent 2000 fills for an address |
userFillsByTime | Fills in [startTime, endTime) window (ascending) |
userFunding | Funding-rate payments (delta type = funding) |
userNonFundingLedgerUpdates | Transfers, deposits, withdrawals — everything except funding |
Request shape (POST against the official /info path through Artery, or
hit hl-adapter directly when running co-located):
bashcurl https://api.hyperliquid.xyz/info \
-H "content-type: application/json" \
-d '{
"type": "userNonFundingLedgerUpdates",
"user": "0xabcd...1234",
"startTime": 1714521600000
}'Response (HL-native shape — one row per ledger event, ascending by time):
json[
{
"time": 1714521717123,
"hash": "0xabc...",
"delta": {
"type": "spotTransfer",
"token": "USDC",
"amount": "10044.61",
"usdcValue": "10044.61",
"user": "0xabcd...1234",
"destination": "0x..."
}
}
]The delta.type discriminator covers the full HL variant set —
send, spotTransfer, deposit, withdraw, accountClassTransfer,
internalTransfer, subAccountTransfer, cStakingTransfer,
gossipPriorityGasAuction, plus funding (only returned by
userFunding).
Historical OHLC window
The locally-served candleSnapshot keeps a 90-day rolling cache of
OHLC buckets per (coin, interval). The first query for a given
historical window pays the upstream round-trip (~1-10s depending on
range); subsequent queries are served from local PG in milliseconds.
- Buckets covered by the live fill stream (~last 24h) are computed
on-the-fly from raw fills — these match HL official
o/c/h/l/v/nbit-for-bit (verified at the join seam). - Older buckets come from the cache; misses are paginated in 4999-bucket chunks to dodge HL's per-call response cap of 5000.
Intervals supported: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d, 1w, 1M. The 1m × 90d combination produces ~130k buckets which
exceeds the 5000-per-call return cap — page with startTime /
endTime if you need that resolution.
HIP-4 endpoints
| Artery | Notes |
|---|---|
GET /v1/hyperliquid/hip4/outcome-meta | info action outcomeMeta |
POST /v1/hyperliquid/hip4/info | Raw passthrough — body forwarded verbatim |
The raw passthrough lets your client use any new HIP-4 info action as Hyperliquid ships it, without waiting for an Artery release.
Wallet model (planned)
- Master wallet — required for
withdraw3,approveAgent,approveBuilderFee,userSetAbstraction - Agent wallet — trading-only (order, cancel, modify, leverage); cannot withdraw funds
Each user gets a unique short-lived agent (named qf-<base36-ts>, max 16
chars) approved via EIP-712 typed data. Agent addresses are never reused
across users to prevent replay.
Builder fees (planned)
Artery supports the HL builder fee program:
- Perp: max 0.1% (100 tenths-bp)
- Spot: max 1% (1000), sell-side only (HL rejects buy with
f≠0) - Builder must hold ≥100 USDC perp account value
- Per user: max 10 active approvals