---
title: "List webhook subscriptions"
method: GET
path: "/webhooks"
tags: ["webhooks"]
---

# List webhook subscriptions

`GET /webhooks`

Returns all webhook subscriptions for the workspace. Returns up to 100 items per page by default.

Paginated using cursor-based pagination. Follow `links.next` in the response to fetch the next page.
When `links.next` is `null`, you have reached the last page.

**OAuth2 isolation**: OAuth2 access tokens only see subscriptions created by the same OAuth2 application.
Public API access tokens see all workspace subscriptions.

## Query parameters

- `pageCursor` string

## Response `200`

A paginated list of webhook subscriptions

- WebhookListResponse — Response envelope for a paginated list of webhook subscriptions.
  - `data` WebhookSubscription[], required
    - `id` string, uuid, required — Unique identifier for this webhook subscription.
    - `type` 'webhook', required — Resource type identifier for webhook subscriptions.
    - `createdAt` string, date-time, required — ISO 8601 timestamp when the subscription was created.
    - `fields` WebhookSubscriptionResponseFields, required — Domain attributes returned in webhook subscription responses. Note: `notification.headers.authorization` is intentionally absent from responses to protect secrets.
      - `name` string, required — Human-readable label for this subscription.
      - `events` WebhookEvent[], required — Event types that trigger this subscription.
        - `eventType` 'feature.created' | 'feature.updated' | 'feature.deleted' | 'component.created' | 'component.updated' | 'product.created' | 'product.updated' | 'release.created' | 'release.updated' | 'release.deleted' | 'feature-release-assignment.updated' | 'hierarchy-entity.custom-field-value.updated' | 'note.created' | 'note.updated' | 'note.deleted' | 'insight.created' | 'insight.deleted' | 'key-result.created' | 'key-result.updated' | 'key-result.deleted' | 'objective.created' | 'objective.updated' | 'objective.deleted' | 'initiative.created' | 'initiative.updated' | 'initiative.deleted', required — Identifies the type of entity change that triggers a webhook notification.
      - `notification` WebhookNotificationConfigResponse, required — Notification configuration as returned in responses (secret omitted).
        - `url` string, uri, required — Target URL for webhook notifications.
        - `version` 1, required — Version of the notification payload structure. Currently only `1` is supported.
    - `links` WebhookSubscriptionLinks, required — Links for this webhook subscription resource.
      - `self` string, uri, required — URL to retrieve this webhook subscription.
  - `links` ListLinks, required
    - `next` string, nullable, required

## Other responses

- `400` — Bad Request - Invalid input format or malformed request
- `401` — Unauthorized - Missing or invalid authentication credentials
- `403` — Forbidden - Insufficient permissions
- `408` — Request Timeout - The server did not receive a complete request within the allowed time
- `429` — Too Many Requests - API rate limit exceeded, reduce request frequency and retry after the indicated time
- `500` — Internal Server Error - An unexpected error occurred on the server, please retry or contact support

---

[API](https://skmtc.dev/productboard/apis/notes.md) · [All operations](https://skmtc.dev/productboard/apis/notes/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/productboard/notes/revisions/b4004749b60f/schema)
