---
title: "Create a webhook"
method: POST
path: "/v1/webhooks"
tags: ["Webhooks"]
---

# Create a webhook

`POST /v1/webhooks`

Creates a new webhook endpoint. When events occur (e.g. feedback_record.created),
the Hub POSTs a signed payload to the webhook URL. If signing_key is omitted,
a key is auto-generated (Standard Webhooks format, whsec_...).
tenant_id is required; webhooks only receive events from that exact tenant.
See WebhookDeliveryPayload for the payload structure sent to your URL.

## Request body

- CreateWebhookInputBody
  - `url` string, uri, required — URL to receive webhook POSTs. Must be an HTTP or HTTPS URL. NULL bytes not allowed.
  - `signing_key` string — Optional. If omitted, a key is auto-generated (whsec_...). Used to sign payloads (Standard Webhooks). When provided, max 255 characters; NULL bytes not allowed.
  - `enabled` boolean — Whether the webhook is active (default true)
  - `tenant_id` string, required — Tenant/organization identifier. Required for webhook isolation; NULL bytes not allowed.
  - `event_types` WebhookEventType[] — Event types this webhook subscribes to. Each value must be one of WebhookEventType. If empty, the webhook receives all event types.

## Response `201`

Created

- WebhookData
  - `id` string, uuid, required — Webhook ID (UUID)
  - `url` string, required — URL that receives webhook POSTs
  - `signing_key` string, required — Key used to sign payloads (Standard Webhooks)
  - `enabled` boolean, required — Whether the webhook is active
  - `tenant_id` string — Tenant/organization identifier
  - `event_types` WebhookEventType[] — Event types this webhook subscribes to (empty = all)
  - `created_at` string, date-time, required — When the webhook was created
  - `updated_at` string, date-time, required — When the webhook was last updated
  - `disabled_reason` string, nullable — Read-only. Set by the system when the webhook was disabled (e.g. after 410 Gone or max delivery failures). Omitted when null.
  - `disabled_at` string, date-time, nullable — Read-only. When the webhook was disabled. Omitted when null. Cleared when the webhook is re-enabled via PATCH.

## Other responses

- `400` — Bad Request (e.g. validation error)
- `403` — Forbidden (e.g. webhook limit exceeded)
- `409` — Conflict – a tenant data purge is in progress for this tenant (code `tenant_write_conflict`); retry after the purge completes.
- `default` — Error

## Changes

> 35 revisions in range; 4 could not be searched.

- **2026-06-26** `17c77a1a3031` — 4 warning
  - added the new `content_too_large` enum value to the `code` response property for the response status `400`
  - added the new `content_too_large` enum value to the `code` response property for the response status `403`
  - added the new `content_too_large` enum value to the `code` response property for the response status `409`
  - added the new `content_too_large` enum value to the `code` response property for the response status `default`
- **2026-06-16** `d2fa5d9f2e98` — 3 warning, 1 info
  - added the new `tenant_write_conflict` enum value to the `code` response property for the response status `400`
  - added the new `tenant_write_conflict` enum value to the `code` response property for the response status `403`
  - added the new `tenant_write_conflict` enum value to the `code` response property for the response status `default`
  - added the non-success response with the status `409`
- **2026-06-03** `6907a0a9de00` — 3 breaking, 3 warning, 18 info
  - the `instance` response's property type/format changed from `string`/`uri` to `string`/`` for status `400`
  - the `instance` response's property type/format changed from `string`/`uri` to `string`/`` for status `403`
  - the `instance` response's property type/format changed from `string`/`uri` to `string`/`` for status `default`
  - removed the optional property `errors` from the response with the `400` status
  - …20 more
- …earlier changes not shown

[Full history](https://skmtc.dev/formbricks/apis/formbricks-hub-api/changes/v1/webhooks/post.md)

---

[API](https://skmtc.dev/formbricks/apis/formbricks-hub-api.md) · [All operations](https://skmtc.dev/formbricks/apis/formbricks-hub-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/formbricks/formbricks-hub-api/revisions/84bba639c72b/schema)
