---
title: "List webhooks"
method: GET
path: "/v1/projects/{project_id}/webhooks"
tags: ["Webhooks"]
---

# List webhooks

`GET /v1/projects/{project_id}/webhooks`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/webhooks`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

The endpoints registered in the project, newest first.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

A page of webhooks.

- WebhookList
  - `data` Webhook[], required
    - `id` string, required: Public webhook ID (whk_ prefix).
    - `project_id` string, required
    - `url` string, uri, required: Where deliveries are POSTed.
    - `events` string[], required: Which events this endpoint receives. Each entry is an exact type (`generation.completed`), a resource wildcard (`generation.*`), or `*` for everything. A bare resource name (`generation`) matches nothing and is rejected.
    - `description` string, nullable, required: Operator-facing label.
    - `active` boolean, required: Whether deliveries are attempted.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `next_cursor` string, nullable, required: Cursor for the next page, or null when there are no more.

## Other responses

- `400`: The request was malformed or failed validation.
- `401`: Missing or invalid credentials.
- `404`: The resource does not exist (existence is not leaked).

---

[API](https://skmtc.dev/naturali/apis/naturali-ai-api.md) · [All operations](https://skmtc.dev/naturali/apis/naturali-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/naturali/apis/naturali-ai-api/revisions/e4905b78f422?raw)
