> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Discoverable catalog of webhook event types and payload fields

> Programmatic catalog of webhook events. Tenant SDK consumers wiring up a receiver can consult this endpoint to know: - Which event_type strings to expect on…

Programmatic catalog of webhook events.

Tenant SDK consumers wiring up a receiver can consult this endpoint
to know:

* Which `event_type` strings to expect on the wire
* Which payload fields are guaranteed (envelope + per-event)
* Which subscription wildcard means 'everything'

The catalog is the single source of truth — both the worker (when
emitting) and the subscription validators (when accepting an
`events` array) reference it.

Cached for 300s; supports If-None-Match.

### Response

`WebhookEventsResponse`

<ResponseField name="api_version" type="string" required>
  Schema version of the envelope (matches `api_version` on every delivery).
</ResponseField>

<ResponseField name="envelope_fields" type="string[]" required>
  Fields injected by the webhook envelope on every delivery.
</ResponseField>

<ResponseField name="events" type="WebhookEventDescriptor[]" required>
  Every event\_type the platform may emit.

  <Expandable title="WebhookEventDescriptor">
    <ResponseField name="name" type="string" required>
      The `event_type` string surfaced on every webhook delivery.
    </ResponseField>

    <ResponseField name="description" type="string" required />

    <ResponseField name="when_fires" type="string" required>
      Human-readable trigger condition.
    </ResponseField>

    <ResponseField name="payload_fields" type="string[]" required>
      Top-level fields receivers can rely on (in addition to the envelope fields `event_id`, `event_type`, `event_timestamp`, `api_version`).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="subscription_wildcard" type="string" required>
  When subscribing to a webhook endpoint, this token in the `events` array means 'all event types'.
</ResponseField>

### Status codes

| Code  | Meaning             |
| ----- | ------------------- |
| `200` | Successful Response |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.computer.stateset.app/api/v1/system/webhook-events' \
    --header 'X-API-Key: YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "api_version": "2026-08-01",
    "envelope_fields": [
      "string"
    ],
    "events": [
      {
        "name": "Two-Person Tent",
        "description": "Two-person tent, green — replacement for damaged pole set.",
        "when_fires": "string",
        "payload_fields": []
      }
    ],
    "subscription_wildcard": "string"
  }
  ```
</ResponseExample>
