---
title: "Get webhook subscription"
method: GET
path: "/webhooks/{webhookId}"
tags: ["webhooks"]
---

# Get webhook subscription

`GET /webhooks/{webhookId}`

Returns a single webhook subscription by ID.

**OAuth2 isolation**: returns `404` if the subscription was created by a different OAuth2 application
or by a public API access token (existence is masked for security).

## Path parameters

- `webhookId` string, uuid, required

## Response `200`

Webhook subscription details

- WebhookResponse — Response envelope for a single webhook subscription.
  - `data` WebhookSubscription, required — A webhook subscription resource.
    - `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.

## Other responses

- `400` — Bad Request - Invalid input format or malformed request
- `401` — Unauthorized - Missing or invalid authentication credentials
- `403` — Forbidden - Insufficient permissions
- `404` — Not Found - The requested resource does not exist or is not accessible
- `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)
