Hyperliquid allCandles WebSocket API
Subscribe to live Hyperliquid OHLCV candle updates for all active markets in one WebSocket stream, with response billing based on emitted candle objects.
Hyperliquid RPC endpoint: endpoint URLs, plans and pricing.
Use allCandles when you want one live stream of candle changes across every active Hyperliquid market for a single interval. The stream is sparse: each data frame contains only markets that emitted a candle update for that batch.
If you need one specific market, use candles.
WebSocket is for live candle delivery
The allCandles stream is not a historical replay API. It starts delivering live batches after a successful subscription.
Billing
Billed by emitted candle objects
allCandles WebSocket data frames are billed by the number of candle objects delivered in data, not as one response per WebSocket
frame. A frame with 87 candle objects counts as 87 responses.
Sparse markets that do not emit a candle object in a frame do not add to the response count. Subscription acknowledgements and other control messages establish the stream but do not add candle responses.
Endpoint
wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEYIf your client expects an explicit WebSocket path, this compatible form also works:
wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/wsSubscribe Message
Send a subscribe message with subscription.type set to allCandles. Unlike the single-market stream, this subscription does not include market.
{
"method": "subscribe",
"subscription": {
"type": "allCandles",
"interval": "1m"
}
}Supported intervals are 1s, 1m, and 5m.
Subscription Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
method | string | Yes | Must be "subscribe" |
subscription.type | string | Yes | Must be "allCandles" |
subscription.interval | string | Yes | Candle interval. Supported values are "1s", "1m", and "5m" |
{
"method": "subscribe",
"subscription": {
"type": "allCandles",
"interval": "1m"
}
}Example Flow
Client sends:
{
"method": "subscribe",
"subscription": {
"type": "allCandles",
"interval": "1m"
}
}Server acknowledges:
{
"type": "subscribed",
"interval": "1m",
"subscriptionType": "allCandles"
}Then sends allCandles events. Each event contains a data array of candle objects:
{
"type": "allCandles",
"seq": 12,
"cursor": "1775601060000",
"data": [
{
"s": "BTC",
"i": "1m",
"t": 1775601060000,
"T": 1775601119999,
"o": "71564",
"h": "71578",
"l": "71563",
"c": "71577",
"v": "0.21291",
"q": "15238.32632",
"n": 57,
"x": false
},
{
"s": "ETH",
"i": "1m",
"t": 1775601060000,
"T": 1775601119999,
"o": "3864.2",
"h": "3865.1",
"l": "3863.9",
"c": "3864.8",
"v": "14.893",
"q": "57555.8064",
"n": 31,
"x": false
}
]
}Response Field Reference
| Field | Description |
|---|---|
seq | Per-subscription sequence number. Starts at 1 for the first allCandles event and increases on every data message |
cursor | Candle open time encoded as a Unix millisecond timestamp string |
data | Array of candle objects emitted for the batch |
data.s | Hyperliquid market symbol, for example BTC, @142, or hyna:ETH |
data.i | Candle interval, one of 1s, 1m, 5m |
data.t | Candle open time in Unix milliseconds |
data.T | Candle close time in Unix milliseconds |
data.o | First trade price in the interval |
data.h | Highest trade price in the interval |
data.l | Lowest trade price in the interval |
data.c | Last trade price in the interval |
data.v | Total traded size in base units |
data.q | Total traded notional in quote units |
data.n | Number of contributing trades |
data.x | Candle finalization flag. false means the candle is still open and true means it is finalized |
Behavior
- subscription is keyed by
interval - the stream emits arrays of changed candle snapshots across active markets
- each frame contains only markets with a candle update in that batch
seqis per-subscription ordering and starts at1for the firstallCandleseventcursoris the candle open time encoded as a Unix millisecond timestamp string- candle payloads use the same
s i t T o h l c v q n xschema as REST, JSON-RPC, and the single-market WebSocket stream x=falsemeans the candle is still open, andx=truemeans it is finalized
Authentication
- include your Dwellir API key in the WebSocket path:
wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/wsis also accepted for clients that expect an explicit WebSocket path- both forms connect to the same live
allCandlesstream
When to Use allCandles
- full-market dashboards
- alerting systems that scan every active market
- analytics pipelines that need one interval-wide stream instead of one WebSocket subscription per market
candle ranges
Retrieve paginated historical Hyperliquid OHLCV candle ranges for one market over REST or JSON-RPC, billed by returned candle rows.
Full-History Exports
Download the complete Hyperliquid OHLCV archive as CSV or Parquet files directly from the Dwellir dashboard, one market and interval at a time.