| Property | Value |
|---|---|
| Endpoint | POST /v1/webhook/config |
| Method | POST |
| Auth Required | Yes ([Authorize]) |
| Content-Type | application/json |
| Field | Type | Required | Validation | Description |
|---|---|---|---|---|
project_id | int | Yes | — | Project ID to associate the webhook with |
waba_id | long | Yes | — | WABA (WhatsApp Business Account) ID |
webhook_name | string | Yes | — | Display name for the webhook configuration |
timeout | int | No | — | Request timeout in seconds |
url | string | Yes | Must be a valid HTTP or HTTPS absolute URL | Callback URL where webhook events are sent |
secret | string | No | — | Secret key for webhook signature verification |
is_active | bool | No | — | Whether the webhook is active (defaults to true) |
subscribed_events | HashSet<string> | No | See Subscribed Events | Set of event types the webhook should receive |
subscribed_events field on a webhook configuration accepts the following string values (mapped from the SubscribeEvent enum):| Value | Description |
|---|---|
IncomingMessage | Receive notifications for incoming WhatsApp messages |
DeliveryStatus | Receive message delivery status updates |
AccountStatus | Receive WhatsApp Business Account status changes |
TemplateStatus | Receive message template status updates |
Constraints: Request body must not be null.project_id,waba_id,webhook_name, andurlare required.urlmust be a valid absolute HTTP or HTTPS URL (validated server-side viaUri.TryCreate).organization_idandaccount_idare resolved from the authenticated user's JWT context.
Webhooks DynamoDB table via CreateWebhookConfigAsync.curl --location 'https://api.sendzen.io/v1/webhook/config' \
--header 'Content-Type: application/json' \
--data '{}'{
"id": "string",
"project_id": 0,
"waba_id": 0,
"webhook_name": "string",
"timeout": 0,
"url": "string",
"secret": "string",
"is_active": true,
"subscribed_events": [
"string"
]
}