AArtery
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 providerSurfaces
hyperliquid_perpMain perpetual futures + HIP-3 builder-deployed perps (TSLA, FX, RWA)
hyperliquid_hip4HIP-4 binary YES/NO outcome markets (the actual prediction markets)
hyperliquid_dexHyperEVM 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, userFillsByTime
  • userFunding, userNonFundingLedgerUpdates
  • meta, spotMeta, clearinghouseState, spotClearinghouseState
  • openOrders, 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.

Warning

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:

RangeSurface
0..NMain perps
10_000 + spotMeta.universe[i].indexSpot pairs
100_000 + dex_idx*10_000 + idx_in_dexHIP-3 perps
100_000_000 + (10*outcome_id + side)HIP-4 outcomes (side=0 NO, side=1 YES)

Main perp + HIP-3 endpoints

ArteryUpstream /info typeSource
GET /v1/hyperliquid/info/meta?dex=metaself-hosted
GET /v1/hyperliquid/info/asset-ctxs?dex=metaAndAssetCtxspassthrough
GET /v1/hyperliquid/info/all-mids?dex=allMidsself-hosted
GET /v1/hyperliquid/info/perp-dexsperpDexspassthrough
GET /v1/hyperliquid/info/predicted-fundingspredictedFundingspassthrough
GET /v1/hyperliquid/info/l2-book?coin=l2Bookpassthrough
GET /v1/hyperliquid/info/candlescandleSnapshotself-hosted
GET /v1/hyperliquid/info/spot-metaspotMetaself-hosted
GET /v1/hyperliquid/info/spot-meta-and-asset-ctxsspotMetaAndAssetCtxsofficial (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 typeWhat it returns
userFillsMost recent 2000 fills for an address
userFillsByTimeFills in [startTime, endTime) window (ascending)
userFundingFunding-rate payments (delta type = funding)
userNonFundingLedgerUpdatesTransfers, 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/n bit-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

ArteryNotes
GET /v1/hyperliquid/hip4/outcome-metainfo action outcomeMeta
POST /v1/hyperliquid/hip4/infoRaw 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
Edit this page on GitHubLast updated
Hyperliquid (Perp + HIP-3 + HIP-4) · Artery API Docs