Skip to main content

Two consensus layers

hypernode merges two data sources into one stream. Every event is tagged with its consensus state: Pre-consensus events are raw user-submitted actions intercepted from the gossip protocol before validators commit them. Confirmed events are the validator output after matching, filling, or rejecting.

Event structure

Fields

Event types

Confirmed events

These appear after the validator processes the action. Every order placed on HyperLiquid produces one of these:
The "order" type name covers new resting orders where data.status is "open". There is no separate order_open type on the wire. To identify new resting orders, filter for "order" and check data.status === "open".
Rejection reasons in data.status: badAloPxRejected, perpMarginRejected, insufficientSpotBalanceRejected, iocCancelRejected, reduceOnlyCanceled, reduceOnlyRejected, minTradeNtlRejected, selfTradeCanceled.

Pre-consensus events (from gossip protocol)

These arrive before the validator commits them to a block:

Confirmed order example

Fill example

Fill dir field values

The side field is separate: B = bid (buy order), A = ask (sell order).

Liquidation fill example

The data.liquidation field is always present on fill events. It is null when the fill is not part of a liquidation, and an object when it is. Do NOT check "liquidation" in data — that will be true for every fill. Check data.liquidation !== null instead.
Liquidation fills carry a populated data.liquidation object in addition to the standard fill fields. Use the liquidations_only filter to subscribe to only these events.
Both sides of a liquidation (the liquidated user and the liquidator) appear as separate fill events with the same tid and hash. Correlate them using these shared fields to see the full liquidation flow. Liquidation object fields:

evmRawTx example (pre-block HyperEVM)

Every HyperEVM smart contract transaction appears as an evmRawTx event before it is included in a block. The data field is a hex string containing the full EIP-2718 envelope: a 1-byte tx type prefix followed by RLP-encoded transaction fields. There are no top-level decoded fields — you decode the hex to extract to, calldata, chainId, gas, etc.
The user field on evmRawTx events is a gossip internal identifier, not the transaction sender. To get the real sender, you must recover it from the signature during decoding.

Decoding data (Python)

The hex starts with the EIP-2718 tx type byte (0x02 for EIP-1559). Everything after that is RLP:
All observed evmRawTx events have been EIP-1559 (tx type 0x02). chainId is always 999 (HyperEVM mainnet). Measured lead time vs HyperLiquid’s public RPC: 250ms to 3 seconds, averaging ~1 second. See EVM RPC for pointer-back info on why the HL RPC cannot serve this data.

Pre-consensus cancel example

Prediction market events

Events for HIP-4 outcome tokens include a prediction object in the data:
Outcome token naming: #{10 * outcome_id + side_index}. See Prediction Markets for details.

Timestamp

Unix milliseconds. To convert: