Skip to main content
An event type is the thing a rule listens for: a liquidation, a funding flip, a fill by a wallet you watch, a finished export. Each rule names exactly one. Find yours by category below; each entry says what it reports, how fast it arrives, the venues it covers, and the parameters it takes, whose ranges and defaults are in Rules. Types marked Coming soon are declared but do not accept rules yet; creating one answers “not yet available”.

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 on notional_usd for 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 on magnitude or open_interest_usd if 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 your threshold_pct over your window_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 your threshold, with your hysteresis_pct band. 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, so symbols refers to the payment token, not a market. Condition on amount or notional_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 as cost_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.liquidation never reads liquidations under 100 USD notional, so a rule with no conditions receives every liquidation from 100 USD up.
  • market.oi_delta only considers markets that carried at least 5,000,000 USD of open interest going into the window.
  • hip4.settlement scans settlements of 500 USD and up. A rule that sets no min_notional_usd usually receives settlements from 1,000 USD, and can receive smaller ones when another rule on the platform asks for less. Set min_notional_usd to pin your own floor.
  • market.pga_payment reads 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 on notional_usd, side, taker, is_liquidation and 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. symbols refers to tokens (USDC, HYPE), not pairs. Condition on usdc_value, kind or role. Venues: hyperliquid. Params: max_age_s.
  • account.twap_lifecycle (minutes). A watched address’s TWAP changed state: activated, finished, terminated, error, stopped or waitingForTrigger. Condition on status or terminal. 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.
Every account event accepts the filters 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 your threshold_pct between consecutive updates. Only coins that publish a real oracle price are covered. Symbols are dex-namespaced (xyz:AAPL); a bare AAPL matches nothing. Venues: hip3. Filters: venue, symbols. Params: threshold_pct.
  • chain.upgrade_detected (seconds). Hyperliquid shipped a new node build. Two edges share one incident_id: data.state is started when the new binary is swapped onto our node, and completed when that binary is the running node and reading fresh blocks again, with duration_s between them. Identity is the build commit. Builds usually land about weekly, around the weekend UTC. Condition on state, commit, weekday_utc or duration_s. Venues: hyperliquid. Filters: venue.
  • oracle.stall (minutes, Coming soon). A HIP-3 dex oracle stopped publishing for longer than your window_s. data.state is stalled, recovered or expired. Venues: hip3. Filters: venue. Params: window_s.
  • chain.block_stall (minutes, Coming soon). Hyperliquid mainnet stopped producing blocks for threshold_s or more, confirmed by independent liveness signals so our own node stalling alone never fires it. data.state is stalled or recovered. Venues: hyperliquid. Filters: venue. Params: threshold_s.
  • chain.block_time_degraded (minutes, Coming soon). Block cadence fell degraded_pct or more below its trailing 24-hour baseline for consecutive_minutes. Precedes stalls. data.state is degraded or recovered. 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 with archive.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 as archive.gap_detected.
  • ingest.stall (minutes). One market’s L2 feed went silent for threshold_s while its stream kept flowing. Naming symbols opts into one event per market; a rule without symbols gets 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 of ingest.stall, sharing its incident_id. Venues, filters and params as ingest.stall.

Export, test and billing

  • export.job.completed (minutes). A bulk export job finished and its Parquet files are ready. The payload carries job_id and an api_url pointer for download links. No filters.
  • export.job.failed (minutes). A bulk export job failed. The payload carries job_id and error_message. No filters.
  • billing.credit_low (minutes). Your own monthly credit pool crossed one of your levels_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’s latency_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_detected is 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.test is queued as soon as you send it.
Every delivery whose event has a timestamp carries 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 from GET /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) or user (about your own account).
  • venues, filters: the venues it covers, and which of venue, symbols and addresses it accepts.
  • params: the numbers that define an occurrence, each with a type, unit, default, and either a min/max range or an enum menu.
  • 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: seconds or minutes.
  • 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.
Last modified on October 6, 2026