
# List event types

`GET /v1/event-types` · permission `events:read` · all plans

Returns the customer event catalog: every event type a webhook endpoint can subscribe to and [List events](../events/list.md) can return. Each type lists its published schema versions, oldest first, and whether it is high volume. The human-readable reference for each type is under [Events](/docs/events).

The catalog is the same in every environment. Results are sorted by type name, descending by default (`order=asc` for ascending), in cursor pages.

## Request

| Field | Type | Required | Description |
|---|---|---|---|
| `limit` | query | no | 1–100 items per page; default 20. |
| `after` | query | no | Cursor from `list_metadata.after` of the previous page. |
| `before` | query | no | Cursor from `list_metadata.before`; cannot be combined with `after`. |
| `order` | query | no | `desc` (default) or `asc`. A cursor works only with the order it was issued for. |

## Response

`200 OK`. `list_metadata.after` is `null` on the last page; there is no total count.

| Field | Description |
|---|---|
| `type` | Event type, such as `user.created`. |
| `schema_versions` | Published schema versions, oldest first. Each has `schema_version` and `schema_id`, the JSON Schema `$id` of that version. A webhook endpoint that does not set `event_schema_versions` for the type receives the first (oldest) version. |
| `high_volume` | `true` for types that are not included when an endpoint subscribes to all types; choose them by name (for example `authentication.succeeded`). |

```json
{
  "data": [
    {
      "type": "user.created",
      "schema_versions": [
        {"schema_version": 1, "schema_id": "https://docs.keenauth.com/events/user.created.v1.json"}
      ],
      "high_volume": false
    }
  ],
  "list_metadata": {"before": null, "after": "AQAMdXNlci5jcmVhdGVk"}
}
```

## Errors

| HTTP | code | When |
|---|---|---|
| 400 | `invalid_cursor` | The cursor is malformed, belongs to another environment or another sort order. |
| 422 | `validation_failed` | A query parameter is invalid (`/limit`, `/order`). |
| 401 | `unauthenticated` | The credential is missing, invalid or revoked. |
| 403 | `insufficient_permissions` | The credential lacks `events:read`. |
| 429 | `rate_limited` | The rate limit was exceeded; retry after the `Retry-After` period. |

## Example

```bash
curl "https://api.eu.keenauth.com/v1/event-types?order=asc&limit=100" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth event-types list --order asc --limit 100`
