Docs

OHLCV Data - Aggregated Candlestick Data

Access Hyperliquid OHLCV candles over REST, JSON-RPC, and WebSocket with sparse 1s, 1m, and 5m intervals for all Hyperliquid markets.

Pre-aggregated candlestick data (Open, High, Low, Close, Volume) for Hyperliquid markets, exposed through a public Dwellir endpoint over REST, JSON-RPC, and WebSocket.

What is OHLCV Data?

OHLCV data aggregates individual fills into time-based candles that are easier to use for charting, technical analysis, portfolio monitoring, and strategy backtesting than raw execution streams.

This product is built from the same raw fill data Dwellir collects from Hyperliquid and stores canonically, then derives sparse 1s, 1m, and 5m candles from that trade history.

Public endpoint is live

The public OHLCV endpoint is available now at api-hyperliquid-index.n.dwellir.com with the same Dwellir API key model used across the platform.

Historical coverage start

The OHLCV archive starts at 2025-07-27T08:00:00Z, which matches the first available node_fills_by_block archive entry. This is the historical floor we intend to serve once backfill is fully complete.

Available Intervals

IntervalDescriptionTypical Use Case
1s1 secondHigh-frequency analysis, microstructure research
1m1 minuteIntraday trading, execution review, dashboards
5m5 minutesShort-term trend analysis, higher-level charting

Larger intervals are intentionally not materialized today. Clients can derive them from the shipped 1s, 1m, or 5m candles.

Available Markets

OHLCV data covers all Hyperliquid market types. Each type uses a different symbol format in the market parameter:

Market typeSymbol formatExampleHow it works
Perp (native)ASSETBTC, ETH, SOLUse the asset name directly
Spot@INDEX@142, @1, @9Use @ followed by the pair's numeric index
HIP-3 perpDexprefix:ASSEThyna:ETH, xyz:AAPLUse the DEX prefix, a colon, then the asset name

Spot markets use the @INDEX format (e.g. @142 for UBTC/USDC), not the token name. The only exception is PURR, the sole canonical spot pair, which can be queried by name.

Discovering market symbols

Use Dwellir's Info Endpoint to look up valid symbols before querying candles.

Market typeInfo EndpointWhat to look for
PerpmetaEach entry's name field in the universe array (e.g. "BTC")
SpotspotMetaEach pair's index in the universe array — use as @INDEX (e.g. @142)
HIP-3 perpDexperpDexsThe first element of each assetToStreamingOiCap pair (e.g. "hyna:ETH")

For full details on how to query these endpoints, see Discovering Markets in the candles docs.

If you need to map a market to the underlying Hyperliquid asset index, start from meta, spotMeta, and perpDexs.

Candle Schema

Text
s, i, t, T, o, h, l, c, v, q, n, x
FieldTypeDescription
sstringHyperliquid market symbol, for example BTC, @142, or hyna:ETH
istringCandle interval, one of 1s, 1m, 5m
tintegerCandle open time in Unix milliseconds
TintegerCandle close time in Unix milliseconds
odecimal stringFirst trade price in interval
hdecimal stringHighest trade price in interval
ldecimal stringLowest trade price in interval
cdecimal stringLast trade price in interval
vdecimal stringTotal traded size in base units
qdecimal stringTotal traded notional in quote units
nintegerNumber of contributing trades
xbooleantrue when the candle is finalized, false when it is still open

How to Use the Endpoint

Choose the transport that matches your workflow:

Current product contract:

  • REST returns one candle per request
  • JSON-RPC returns one candle per request
  • WebSocket streams live candle state after subscribe with wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY; wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/ws is also accepted
  • allCandles WebSocket streams emit arrays of changed candle snapshots and bill by the number of candle objects delivered in each data frame

Sparse Candles

Candles are sparse, not forward-filled

Only intervals with trading activity are materialized. Empty intervals are omitted rather than emitted as zero-volume carry-forward candles.

This means:

  • the dataset preserves real trading activity instead of synthesizing flat bars
  • downstream consumers that need dense chart series can fill missing intervals on their side
  • response counting for historical retrieval should assume one response per existing candle, not one response per theoretical time bucket

Response Volume for One Market Over 30 Days

The current OHLCV contract returns one candle per response for REST and JSON-RPC. That means historical retrieval volume is easy to estimate directly from the interval you need.

IntervalApproximate candles in 30 daysApproximate responses
1s2,592,0002,592,000
1m43,20043,200
5m8,6408,640

For example, a full 30-day pull of 1m BTC candles is about 43,200 responses, while the same window at 1s resolution is about 2.59 million responses.

Example Candle

JSON
{
  "s": "BTC",
  "i": "1m",
  "t": 1774911600000,
  "T": 1774911659999,
  "o": "66745",
  "h": "66746",
  "l": "66687",
  "c": "66687",
  "v": "4.78586",
  "q": "319316.665",
  "n": 256,
  "x": true
}

Data Quality

  • Accuracy: Derived from canonical raw fill history
  • Consistency: One schema across all shipped intervals and transports
  • Recency: Historical backfill plus live candle upkeep

Note on Sweep Executions

In fast markets, one large order can trade through several price levels in a single sweep. When candles are derived from raw fill data, those exact match prices are preserved, which can occasionally produce slightly different highs or lows than a venue's own public candlestick feed.

Think of the book like this:

  • ask at 69344
  • ask at 69343
  • then one aggressive order arrives and buys through both levels

In one BTC 5-minute bar we validated, that sweep matched:

  • 0.08487 BTC at 69344
  • 0.34059 BTC at 69343

If you keep the exact fill prices, the candle for that slice is:

  • low = 69343
  • volume = 0.42546 BTC

From our benchmarking against the public Hyperliquid endpoint, it appears that their candlestick feed compresses some sweeps differently. We base our candles directly on node fills and preserve the executed prices instead of re-aggregating that move away, so the same sweep can appear as:

  • low = 69344
  • volume = 0.42546 BTC

This is intentional. Dwellir candles are built from the underlying node fill stream, so highs, lows, and volume reflect the executed prices we observe rather than a more compressed candle representation. That can produce small high or low differences versus another public feed, but it is the more execution-faithful view of what actually traded.

NeedRecommendation
Individual trade executionsTick Data
Raw archive / full historical source dataArchival Data
Native Hyperliquid L1 fill streamingStreamFills gRPC

Access

Use your Dwellir API key directly against the public OHLCV host, or contact the Dwellir team if you need help with access and product fit.