Docs

Hyperliquid OHLCV REST API

Query Hyperliquid OHLCV candles over HTTP with one candle per request using your Dwellir API key.

Use the REST endpoint when you want a simple HTTP lookup for one specific candle.

Endpoint

Text
GET https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/v1/candles

Historical coverage start

REST candle lookups are intended to cover history back to 2025-07-27T08:00:00Z, which is the first available node_fills_by_block archive hour.

Query Parameters

ParameterRequiredDescription
marketyesHyperliquid market symbol — see market types for the three formats (perp, spot, HIP-3)
intervalyesCandle interval, one of 1s, 1m, 5m
timeyesCandle bucket-open timestamp in ISO-8601 UTC. This identifies the exact candle you want, for example 2026-03-30T23:00:00Z for the 23:00 1m candle. To retrieve multiple candles, iterate over the bucket-open timestamps you need and request each one separately.

Examples

Native perp

Bash
curl "https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/v1/candles?market=BTC&interval=1m&time=2026-03-30T23:00:00Z"

Spot

Bash
curl "https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/v1/candles?market=@142&interval=1m&time=2026-03-30T23:00:00Z"

HIP-3 perpDex

Bash
curl "https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/v1/candles?market=hyna:ETH&interval=1m&time=2026-03-30T23:00:00Z"

Response (same shape for all market types):

JSON
{
  "market": "BTC",
  "interval": "1m",
  "bucket_start": "2026-03-30T23:00:00Z",
  "open": "66745",
  "high": "66746",
  "low": "66687",
  "close": "66687",
  "volume": "4.78586",
  "trades_count": 256,
  "vwap": "66733.634306059987321311"
}

Discovering Markets

Use the Info Endpoint to find valid market values before querying candles.

Native perp symbols

Call meta — each entry's name in the universe array is the symbol you need.

Bash
curl -X POST 'https://api-hyperliquid-mainnet-info.n.dwellir.com/YOUR_API_KEY/info' \
  -H 'Content-Type: application/json' \
  -d '{"type":"meta"}'

Look for entries like { "name": "BTC", "szDecimals": 5, "maxLeverage": 40 } — use market=BTC.

Spot symbols

Call spotMeta — each pair in the universe array has an index field. Prefix it with @ to get the market symbol.

Bash
curl -X POST 'https://api-hyperliquid-mainnet-info.n.dwellir.com/YOUR_API_KEY/info' \
  -H 'Content-Type: application/json' \
  -d '{"type":"spotMeta"}'

To find a specific token's spot pair, cross-reference the tokens and universe arrays:

Python
import requests

data = requests.post(
    "https://api-hyperliquid-mainnet-info.n.dwellir.com/YOUR_API_KEY/info",
    json={"type": "spotMeta"},
).json()

tokens = {t["index"]: t for t in data["tokens"]}

for pair in data["universe"]:
    t0, t1 = pair["tokens"]
    if "BTC" in tokens[t0]["name"].upper():
        symbol = pair["name"] if pair.get("isCanonical") else f"@{pair['index']}"
        print(f"Use market={symbol}")  # market=@142

HIP-3 perpDex symbols

Call perpDexs — each DEX has an assetToStreamingOiCap array of [symbol, oiCap] pairs. The symbol is what you pass as market.

Bash
curl -X POST 'https://api-hyperliquid-mainnet-info.n.dwellir.com/YOUR_API_KEY/info' \
  -H 'Content-Type: application/json' \
  -d '{"type":"perpDexs"}'

Look for entries like ["hyna:ETH", "50000000.0"] — use market=hyna:ETH.

Some HIP-3 DEXs currently available:

PrefixNameExample assets
xyzXYZxyz:AAPL, xyz:GOLD
flxFelix Exchangeflx:COPPER, flx:COIN
hynaHyENAhyna:BTC, hyna:ETH
kmMarkets by Kinetiqkm:AAPL, km:BMNR
cashdreamcashcash:EWY, cash:GOLD
paraParagonpara:TOTAL2, para:OTHERS

Behavior

  • one request returns one candle
  • candle timestamps are UTC bucket-open times
  • missing intervals are omitted at the data layer because candles are sparse

How the time parameter works

time is the open time of the candle you want back, not an arbitrary point inside a range. If you want a series of candles, step through the bucket-open timestamps for the interval you are querying and request each bucket individually.

Current contract is intentionally narrow

The REST API does not provide bulk historical range reads today. Historical retrieval is done as one candle per response.

If you want the full archive for one market and one interval, follow the archive backfill guide. It shows how to step through the archive one candle at a time and resume a long-running export.

Fetching Multiple Candles

Use the time parameter as the iterator. For 1m, advance by one minute per request. For 5m, advance by five minutes. For 1s, advance by one second.

When to Use REST

  • simple backend lookups
  • dashboards that fetch known candles by timestamp
  • scripts that already work with plain HTTP