Skip to main content
Subscribe with {"method":"subscribe","subscription":{"type":"allLedgerUpdates"}} to receive every non-funding ledger event of every user on Hyperliquid, a few seconds after it happens: deposits, withdrawals, send and spot transfers, sub-account and perp/spot class transfers, vault deposits and withdrawals, staking, borrow/lend, and the other types of userNonFundingLedgerUpdates. Add "users": [...] (up to 20,000 addresses) and/or "types": [...] to receive only what you need; see Filters. One subscription replaces one userNonFundingLedgerUpdates subscription per address: use it to follow a list of wallets, or the deposit and withdrawal flows of the whole exchange.

Event shape

One item per event, with the same time, hash and delta as userNonFundingLedgerUpdates, plus users:
  • time: the event’s timestamp, in milliseconds;
  • hash: the transaction hash, or the zero hash for system events;
  • users: the one or two addresses involved, lower-cased and sorted. A transfer from A to B is sent once, with both addresses; read delta.user and delta.destination for the direction;
  • delta: the event exactly as Hyperliquid emits it, delta.type giving its kind.
Funding payments are not ledger events: subscribe to userFundings for them.

Filters

With both, an event is sent when it matches both: {"users": [...], "types": ["deposit", "withdraw"]} gives the deposits and withdrawals of those wallets. Any other parameter is refused with an error, so a typo never silently turns the subscription into the full stream. The acknowledgement gives the number of addresses instead of echoing them, and the types in force: {"channel":"subscriptionResponse","data":{"method":"subscribe","subscription":{"type":"allLedgerUpdates","users":15000,"types":["deposit","withdraw"]}}}.
  • The subscribe message must stay under 1 MB (20,000 addresses take about 900 KB).
  • One allLedgerUpdates subscription per connection: subscribing again replaces the filters. {"method":"unsubscribe","subscription":{"type":"allLedgerUpdates"}} stops it.

Volume, latency and duplicates

A few events per second across all of Hyperliquid on average, with bursts above 100 per second (November 2026), each 2 to 4 seconds after the event (median). There is no snapshot: it is a pure stream. After a rare restart on our side, the events of the last seconds may be sent again: deduplicate on time, hash and delta (a transaction can carry several events, and system events share the zero hash). To catch up after a disconnect, or to read a past window, use the REST counterpart POST /info with {"type":"allLedgerUpdates","startTime":...} (Live Data REST API, Account History): same items, paged, with the same optional users and types filters, complete for every user from 27 September 2025. Usage is billed as standard WebSocket events against your plan’s credits.

Non-funding ledger events of every user on Hyperliquid (or of the users / types of the subscription), one item per event: time, hash, users (the one or two addresses involved, lower-cased and sorted) and delta, the event as Hyperliquid emits it (same delta as userNonFundingLedgerUpdates). No snapshot.

channel
enum<string>
required
Available options:
allLedgerUpdates
data
object[]
required