Docs

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.

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 the single-market WebSocket API.

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

Text
wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY

If your client expects an explicit WebSocket path, this compatible form also works:

Text
wss://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/ws

Subscribe Message

Send a subscribe message with subscription.type set to allCandles. Unlike the single-market stream, this subscription does not include market.

JSON
{
  "method": "subscribe",
  "subscription": {
    "type": "allCandles",
    "interval": "1m"
  }
}

Supported intervals are 1s, 1m, and 5m.

Subscription Parameters

ParameterTypeRequiredDescription
methodstringYesMust be "subscribe"
subscription.typestringYesMust be "allCandles"
subscription.intervalstringYesCandle interval. Supported values are "1s", "1m", and "5m"

Example Flow

Client sends:

JSON
{
  "method": "subscribe",
  "subscription": {
    "type": "allCandles",
    "interval": "1m"
  }
}

Server acknowledges:

JSON
{
  "type": "subscribed",
  "interval": "1m",
  "subscriptionType": "allCandles"
}

Then sends allCandles events. Each event contains a data array of candle objects:

JSON
{
  "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

FieldDescription
seqPer-subscription sequence number. Starts at 1 for the first allCandles event and increases on every data message
cursorCandle open time encoded as a Unix millisecond timestamp string
dataArray of candle objects emitted for the batch
data.sHyperliquid market symbol, for example BTC, @142, or hyna:ETH
data.iCandle interval, one of 1s, 1m, 5m
data.tCandle open time in Unix milliseconds
data.TCandle close time in Unix milliseconds
data.oFirst trade price in the interval
data.hHighest trade price in the interval
data.lLowest trade price in the interval
data.cLast trade price in the interval
data.vTotal traded size in base units
data.qTotal traded notional in quote units
data.nNumber of contributing trades
data.xCandle 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
  • seq is per-subscription ordering and starts at 1 for the first allCandles event
  • cursor is 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 x schema as REST, JSON-RPC, and the single-market WebSocket stream
  • x=false means the candle is still open, and x=true means 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/ws is also accepted for clients that expect an explicit WebSocket path
  • both forms connect to the same live allCandles stream

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