Lighter live subscriptions are available on
lighter_orderbook, lighter_trades, lighter_open_interest, and lighter_funding through wss://api.0xarchive.io/ws. lighter_candles and lighter_l3_orderbook are replay-only, and all six Lighter channels support historical replay. See Lighter WebSocket channels for live message shapes.Lighter on Robinhood Chain live subscriptions are available on rh_lighter_orderbook, rh_lighter_trades, rh_lighter_open_interest, and rh_lighter_funding through wss://api.0xarchive.io/ws. rh_lighter_candles is replay-only, and all five Robinhood Chain channels support historical replay. See Lighter on Robinhood Chain.Examples
Unsubscribe
Channel Selection
Choose channels the same way you choose REST route families. Hyperliquid core channels are for standard perp symbols such asBTC and ETH. Spot work should use Spot-specific route and stream context when available. HIP-3 channels keep the builder prefix, HIP-4 channels keep outcome identifiers, and Lighter channels stay under the Lighter family.
Channel Family Matrix
Use this matrix to avoid treating every WebSocket channel as the same stream.Live and replay availability
Replay availability is a channel contract, not a family-wide default. Standard timed replay emits timeline events according tospeed. Core L4 uses checkpoint-anchored bulk delivery. A live channel can still have no replay path, and stored replay can remain available while current reads use REST.
For core L4, replay starts from the latest usable checkpoint at or before the requested start time. A request can be rejected when no checkpoint is available for that symbol and window. See WebSocket replay for the
l4_snapshot and l4_batch event flow.
Lighter live channels
Live Lighter channels use the samesubscribe command and data envelope as live Hyperliquid channels, on wss://api.0xarchive.io/ws. lighter_orderbook sends a full top-20 book at most once per interval: one book per second by default, or the rate set by the optional interval_ms subscribe field (100 to 5000). lighter_trades sends fill legs, two per trade with the same tid. lighter_open_interest and lighter_funding carry the same market-context message. Live payloads differ from the historical_data rows that Lighter replay returns, so parse them separately. See Lighter WebSocket channels for payload fields, errors, and lag notices.
Lighter on Robinhood Chain live subscriptions are available on rh_lighter_orderbook, rh_lighter_trades, rh_lighter_open_interest, and rh_lighter_funding through wss://api.0xarchive.io/ws. rh_lighter_candles is replay-only, and all five Robinhood Chain channels support historical replay. The live messages use the same shapes as the mainnet channels, rh_lighter_orderbook takes the same interval_ms range, and a multi-channel replay keeps rh_lighter_* and lighter_* channels in separate commands.
Native userFills terminology
Native Hyperliquid userFills maps to 0xArchive trades. 0xArchive has no WebSocket channel named userFills; do not subscribe to a nonexistent fill channel. Use trades and filter the returned rows client-side when attribution is needed.
Subscription Fields
Record these fields for each active subscription.
Store the checklist with active connection state. On reconnect, restore from this checklist list. On unsubscribe, remove it from the list before trusting local subscription state.
Common Channel Mistakes
Do not send a HIP-3 symbol to a Lighter channel. Do not strip a HIP-3 prefix before subscribing. Do not treat HIP-4 outcome identifiers as ordinary perp symbols. Do not add Spot pairs to a generic perp stream; use Spot channel names such asspot_orderbook and keep dashed pair symbols visible in code.
State Handling
For order books and reconstruction workflows, treat the first snapshot as the baseline and each update as an ordered change. Livelighter_orderbook is the exception: every live message is a full top-20 book, so replace local state with each message instead of applying it as a change. Store channel, symbol, timestamp, and message type with local state so a replay or reconnect can show what happened. If a gap event appears, mark the local state unsafe until it is rebuilt from a fresh snapshot or replay window.