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
| Interval | Description | Typical Use Case |
|---|---|---|
1s | 1 second | High-frequency analysis, microstructure research |
1m | 1 minute | Intraday trading, execution review, dashboards |
5m | 5 minutes | Short-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 type | Symbol format | Example | How it works |
|---|---|---|---|
| Perp (native) | ASSET | BTC, ETH, SOL | Use the asset name directly |
| Spot | @INDEX | @142, @1, @9 | Use @ followed by the pair's numeric index |
| HIP-3 perpDex | prefix:ASSET | hyna:ETH, xyz:AAPL | Use 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 type | Info Endpoint | What to look for |
|---|---|---|
| Perp | meta | Each entry's name field in the universe array (e.g. "BTC") |
| Spot | spotMeta | Each pair's index in the universe array — use as @INDEX (e.g. @142) |
| HIP-3 perpDex | perpDexs | The 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
s, i, t, T, o, h, l, c, v, q, n, x| Field | Type | Description |
|---|---|---|
s | string | Hyperliquid market symbol, for example BTC, @142, or hyna:ETH |
i | string | Candle interval, one of 1s, 1m, 5m |
t | integer | Candle open time in Unix milliseconds |
T | integer | Candle close time in Unix milliseconds |
o | decimal string | First trade price in interval |
h | decimal string | Highest trade price in interval |
l | decimal string | Lowest trade price in interval |
c | decimal string | Last trade price in interval |
v | decimal string | Total traded size in base units |
q | decimal string | Total traded notional in quote units |
n | integer | Number of contributing trades |
x | boolean | true when the candle is finalized, false when it is still open |
How to Use the Endpoint
Choose the transport that matches your workflow:
candlesfor single-market REST lookups, JSON-RPC lookups, and WebSocket live updatesallCandlesfor one live stream of changed candles across active markets- Full-History Exports for ready-made CSV or Parquet files of the full archive for one market and interval
- Archive backfill guide for DIY historical retrieval of one market and one interval
- CSV export guide for DIY flat-file extraction by market and interval
- Parquet export guide for DIY columnar analytics exports
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/wsis also accepted allCandlesWebSocket 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.
| Interval | Approximate candles in 30 days | Approximate responses |
|---|---|---|
1s | 2,592,000 | 2,592,000 |
1m | 43,200 | 43,200 |
5m | 8,640 | 8,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
{
"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 BTCat693440.34059 BTCat69343
If you keep the exact fill prices, the candle for that slice is:
low = 69343volume = 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 = 69344volume = 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.
Related Data Products
| Need | Recommendation |
|---|---|
| Individual trade executions | Tick Data |
| Raw archive / full historical source data | Archival Data |
| Native Hyperliquid L1 fill streaming | StreamFills 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.
- Dashboard: dashboard.dwellir.com
- Pricing: dwellir.com/pricing
- Support:
support@dwellir.com