---
title: "List webhook event types"
method: GET
path: "/v1/webhooks/event-types"
tags: ["Webhooks - Catalog and Limits"]
---

# List webhook event types

`GET /v1/webhooks/event-types`

## Request

- Base URL: `https://api.0xarchive.io`
- URL: `https://api.0xarchive.io/v1/webhooks/event-types`
- Auth: API key in header `X-API-Key`

Return the served event catalog: one declaration per event type, carrying its scope, covered venues, accepted filters, tunable parameters, the metrics conditions may be written against, the operator vocabulary for each metric type, and the smallest occurrence the type reports. Subscriptions are validated against these declarations, so this is the authority on what a configuration may contain. Types marked `live: false` are published but do not yet accept subscriptions. Authenticate with an API key or a signed-in dashboard session. Costs no credits.

## Response `200`

The served webhook event catalog

- ApiResponseWebhookEventTypeArray: API response containing the served webhook event catalog.
  - `success` boolean, required
  - `data` WebhookEventType[], required
    - `type` string, required: Event type identifier. Send this as `event_type` when creating a subscription.
    - `schema_version` integer, required: Version of the delivered payload shape for this event type.
    - `live` boolean, required: True when the type accepts subscriptions. A type that is published but not yet live is refused at create time.
    - `scope` 'public' | 'user' | 'addresses', required: Who the event is about. `public` is market wide, `user` is your own account and platform activity, and `addresses` reports only on wallets on your watched list.
    - `venues` string[], required: Venues the type covers. Empty when the type is not venue scoped.
    - `filters` string[], required: Filter keys the subscription config accepts for this type. A key that is not listed here is refused rather than ignored.
    - `params` object, required: Tunable parameters, keyed by parameter name.
    - `metrics` object, required: Metrics carried by the event, keyed by metric name. A condition may only reference a metric declared here.
    - `cost_floor` object, nullable, required: The smallest occurrence this type reports at all, below which nothing is detected. Null when the type has no floor.
      - `metric` string, required: Metric the floor applies to.
      - `min` number, required: Lowest value still reported.
      - `unit` string: Unit of `min` when it is not the metric's own unit.
      - `note` string: How the floor applies, when it needs saying.
    - `latency_class` 'seconds' | 'minutes', required: Rough delivery latency for the type, measured from the occurrence to the first delivery attempt.
    - `description` string, required: What the event reports and what one occurrence means.
    - `filters_example` object, required: A worked example of a config for this type.
    - `operators` object, required: Operator vocabulary, grouped: `number` (metric types `number` and `integer`), `text` (`string` and `enum`), `boolean`, `timestamp`, and `any`, which applies to every metric. A condition on a metric may use the operators of its group or of `any`.
  - `meta` ResponseMeta, required: Response metadata. Every 2xx JSON response carries `meta.request_id`; list payloads add `count`; cursor-paged routes add `has_more` and, when another page follows, `next_cursor`; per-symbol routes add `symbol` and `venue`. Fields that do not apply to a route are omitted.
    - `count` integer: Number of records returned
    - `has_more` boolean: Cursor-paged routes: whether another page follows. `next_cursor` is present exactly when this is `true`. A final page can be empty when the previous page was exactly full; `has_more` is `false` on it.
    - `next_cursor` string: Opaque cursor for the next page, present exactly when `has_more` is `true`. Pass it back unchanged as `cursor` with the same filters. Do not parse or construct it.
    - `request_id` string, uuid, required: Unique request ID for support
    - `symbol` string: Per-symbol routes: the canonical public symbol the response describes (for example `BTC`, `xyz:TSLA`, `HYPE-USDC`, `#0`).
    - `venue` 'hyperliquid' | 'hip3' | 'hip4' | 'spot' | 'lighter' | 'rh-lighter': Per-symbol routes: the venue the response describes.
    - `coverage_from` string, date-time: Earliest coverage for the requested symbol and data type. Present only when the requested window ends before coverage begins.
    - `notice` string: Human-readable advisory about the response. Used when the requested window ends before coverage begins for the symbol, and on CVD responses that are one page of several; may carry other advisories in future.
    - `finalized_through` string, date-time: Two-tier datasets (Lighter trades): data at or before this instant is final; later data is preliminary.
    - `requested_end` string, date-time, nullable: The `end` the request asked for, echoed when it was clamped to `finalized_through`.
    - `clamped_to` string, date-time, nullable: The boundary the request's `end` was clamped to, when clamping occurred.
    - `preliminary_row_count` integer, nullable: Number of preliminary rows in this response, on routes that intentionally serve preliminary data (Lighter `/recent`).

## Other responses

- `401`: Authentication required: the API key is missing or invalid.
- `429`: Rate limit, concurrency limit or monthly credits exceeded. See `error_code`.
- `default`: Any other error. The body is an `ErrorResponse`; branch on `error_code`. A 503 (`upstream_unavailable`) carries `Retry-After`.

---

[API](https://skmtc.dev/0xarchive/apis/0xarchive-api-2.md) · [All operations](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/revisions/27076f55595f?raw)
