Market
market.liquidation(seconds). A liquidation on a covered venue. Fills from one cascade collapse into one event per account, market and instant. Every liquidation is an occurrence; add a condition onnotional_usdfor the sizes you care about. Venues:hyperliquid,hip3,lighter,rh-lighter. Filters:venue,symbols. Params:max_age_s.market.liquidation_burst(minutes). Liquidation volume in a rolling window crosses your threshold, in USD or relative to the market’s open interest or trailing hour of volume. Fires on the rising edge, not repeatedly while elevated, and at most once per market in each 15-minute window. Venues:hyperliquid,hip3,lighter,rh-lighter. Filters:venue,symbols. Params:window_s,threshold_mode,threshold_usd,threshold_pct.market.funding_flip(minutes). A funding rate changes sign. Every flip is an occurrence; condition onmagnitudeoropen_interest_usdif a rate hovering near zero would alert too often. Venues:hyperliquid,hip3,rh-lighter. Filters:venue,symbols.market.oi_delta(minutes). Open interest on a market moved by at least yourthreshold_pctover yourwindow_s. Fires once per direction per crossing. Venues:hyperliquid,hip3,rh-lighter. Filters:venue,symbols. Params:window_s,threshold_pct.market.breadth_cross(minutes). The share of markets trading above session VWAP crossed yourthreshold, with yourhysteresis_pctband. Venue-wide, so symbols do not apply. Venues:hyperliquid,hip3. Filters:venue. Params:threshold,hysteresis_pct.market.listed(minutes). A new market is listed. Emitted once per market, the first time data appears for it. Venues:hyperliquid,hip3,spot,lighter,rh-lighter. Filters:venue.market.delisted(minutes, Coming soon). A market flipped from active to inactive. One event per delisting; a relisted market can delist again later. Venues:hyperliquid,hip3,lighter,rh-lighter. Filters:venue,symbols.market.pga_payment(minutes). A priority gas auction payment. Exchange-wide, sosymbolsrefers to the payment token, not a market. Condition onamountornotional_usd. Venues:hyperliquid. Filters:venue,symbols. Params:max_age_s.hip4.settlement(minutes). A HIP-4 outcome side settled. One event per outcome and side, with aggregate contracts and value. Symbols use the per-side coin form, such as#20481. Venues:hip4. Filters:venue,symbols. Params:max_age_s.
Scan floors
Market-wide scans have floors, declared ascost_floor in the catalog. They are the only thresholds the platform sets for you, and a rule can raise them but not lower them.
market.liquidationnever reads liquidations under 100 USD notional, so a rule with no conditions receives every liquidation from 100 USD up.market.oi_deltaonly considers markets that carried at least 5,000,000 USD of open interest going into the window.hip4.settlementscans settlements of 500 USD and up. A rule that sets nomin_notional_usdusually receives settlements from 1,000 USD, and can receive smaller ones when another rule on the platform asks for less. Setmin_notional_usdto pin your own floor.market.pga_paymentreads payments of 1.5 HYPE and up, and stops after 50 payment events in a UTC day across the exchange, so an auction regime shift cannot use up every subscriber’s daily deliveries.
Account-scoped
These report on the addresses on your watched list, and only on occurrences after an address was added. Filters and conditions narrow venue, symbol and size; the watched list decides which addresses count. None of them has a scan floor.account.fill(seconds). A watched address executed in a market: one event per venue, market, block and account, with the fills collapsed and their notional summed. Every execution is an occurrence; conditions onnotional_usd,side,taker,is_liquidationand the other declared metrics pick what you want. Venues:hyperliquid,hip3,spot. Params:max_age_s.account.liquidated(seconds). A watched address was liquidated. Fills from one cascade collapse into a single event per instant. Venues:hyperliquid,hip3. Params:max_age_s.account.transfer(seconds). A HyperCore spot token movement where a watched address is sender or destination.symbolsrefers to tokens (USDC,HYPE), not pairs. Condition onusdc_value,kindorrole. Venues:hyperliquid. Params:max_age_s.account.twap_lifecycle(minutes). A watched address’s TWAP changed state:activated,finished,terminated,error,stoppedorwaitingForTrigger. Condition onstatusorterminal. Venues:hyperliquid,hip3,spot. Params:max_age_s.account.order_rejected(minutes). The engine cancelled a watched address’s orders without the account asking, grouped per block, and on spot also orders rejected at submission. Details below. Venues:hyperliquid,hip3,spot. Params:max_age_s.account.hip4_settled(minutes). A watched address’s HIP-4 position settled, with its settlement value and realized PnL. Venues:hip4. Params:max_age_s.
venue, symbols and addresses.
account.order_rejected reports the engine’s involuntary cancels: reduceOnlyCanceled, selfTradeCanceled, siblingFilledCanceled, openInterestCapCanceled, marginCanceled, liquidatedCanceled, scheduledCancel, delistedCanceled and vaultWithdrawalCanceled. On spot it also reports orders rejected at submission, whose status ends in Rejected. data.kind is involuntary_cancel or submission_reject, and data.status is the engine’s own status. On perps and HIP-3, submission-time rejects never reach the archive and are not covered. You receive at most 5 of these events per watched address, venue and hour; the fifth carries data.budget.exhausted: true, and later ones that hour are not delivered. Margin, liquidation, open interest cap, delisting, vault withdrawal and too-many-open-orders events are exempt from that budget.
Oracle and chain
oracle.jump(minutes). A HIP-3 oracle price moved by at least yourthreshold_pctbetween consecutive updates. Only coins that publish a real oracle price are covered. Symbols are dex-namespaced (xyz:AAPL); a bareAAPLmatches nothing. Venues:hip3. Filters:venue,symbols. Params:threshold_pct.chain.upgrade_detected(seconds). Hyperliquid shipped a new node build. Two edges share oneincident_id:data.stateisstartedwhen the new binary is swapped onto our node, andcompletedwhen that binary is the running node and reading fresh blocks again, withduration_sbetween them. Identity is the build commit. Builds usually land about weekly, around the weekend UTC. Condition onstate,commit,weekday_utcorduration_s. Venues:hyperliquid. Filters:venue.oracle.stall(minutes, Coming soon). A HIP-3 dex oracle stopped publishing for longer than yourwindow_s.data.stateisstalled,recoveredorexpired. Venues:hip3. Filters:venue. Params:window_s.chain.block_stall(minutes, Coming soon). Hyperliquid mainnet stopped producing blocks forthreshold_sor more, confirmed by independent liveness signals so our own node stalling alone never fires it.data.stateisstalledorrecovered. Venues:hyperliquid. Filters:venue. Params:threshold_s.chain.block_time_degraded(minutes, Coming soon). Block cadence felldegraded_pctor more below its trailing 24-hour baseline forconsecutive_minutes. Precedes stalls.data.stateisdegradedorrecovered. Venues:hyperliquid. Filters:venue. Params:degraded_pct,consecutive_minutes.
Archive health
archive.gap_detected(minutes). An ingestion stream stopped producing data beyond its expected cadence. Pairs witharchive.gap_resolved. Venues:hyperliquid,hip3,spot,lighter,rh-lighter. Filters:venue.archive.gap_resolved(minutes). A stream that had stalled started producing data again. Venues and filters asarchive.gap_detected.ingest.stall(minutes). One market’s L2 feed went silent forthreshold_swhile its stream kept flowing. Namingsymbolsopts into one event per market; a rule withoutsymbolsgets one collapsed alert per incident. Venues:hyperliquid,hip3,spot,lighter,rh-lighter. Filters:venue,symbols. Params:threshold_s.ingest.recovered(minutes). A per-market L2 stall cleared. The closing half ofingest.stall, sharing itsincident_id. Venues, filters and params asingest.stall.
Export, test and billing
export.job.completed(minutes). A bulk export job finished and its Parquet files are ready. The payload carriesjob_idand anapi_urlpointer for download links. No filters.export.job.failed(minutes). A bulk export job failed. The payload carriesjob_idanderror_message. No filters.billing.credit_low(minutes). Your own monthly credit pool crossed one of yourlevels_pct(percent remaining). One event per level per month. No filters. Params:levels_pct.webhook.test(seconds). A test you send from the dashboard or the API to check a receiver. It needs no rule.
How fast events arrive
The latency in each entry is the catalog’slatency_class, which says which path produces the event.
seconds. Fills, transfers and liquidations (account.fill,account.transfer,market.liquidation,account.liquidated) on Hyperliquid perps and HIP-3 come from a fast path on our own Hyperliquid node, as do spot fills. They are delivered under a second after the block in normal conditions, and the tail follows Hyperliquid node lag. If that path is interrupted, perp and HIP-3 events still arrive from the archive, a few minutes late; spot fills come only from the fast path and are not caught up.chain.upgrade_detectedis detected on the node itself, within a minute of the binary changing.minutes. Everything else is detected from the archive. Most of it arrives two to three minutes after the fact. Liquidations on Lighter and Lighter on Robinhood Chain are read from the archive about half a minute behind. A funding flip on a venue that records only its settled hourly rate is seen when that settlement lands, up to about an hour after the sign changed.webhook.testis queued as soon as you send it.
late_ms, and late: true when it is more than 10 minutes behind, so a receiver can tell an event that is arriving late from one that just happened. See Signatures and payloads.
The live catalog
This page follows the catalog that every rule is checked against. Fetch it fromGET /v1/webhooks/event-types, or ask an agent to call list_webhook_event_types. Each entry carries:
type,live,description: the event type string, whether it accepts rules today, and what it is.scope:public(market-wide),addresses(only for your watched addresses) oruser(about your own account).venues,filters: the venues it covers, and which ofvenue,symbolsandaddressesit accepts.params: the numbers that define an occurrence, each with a type, unit, default, and either amin/maxrange or anenummenu.metrics: the fields a condition can test, with their types, units and enum values.operators: the operator vocabulary, grouped by metric type.cost_floor: where a market-wide scan has a floor below which occurrences are not read.latency_class:secondsorminutes.filters_example: a configuration that is valid for this event.
Next step
Write a rule for the event you chose
Narrow it by venue, symbol and address, add conditions, and set the parameters that define an occurrence.