Create webhook subscription
Subscribe an https endpoint to events. The API returns the signing secret only in this answer; an owner can show it again in the dashboard after a password check.
Body parameters
| urlrequired | string |
| eventsrequired | string[] |
| description | string |
- Store the secret: the API returns it only in this answer. An owner or admin can show it again in the dashboard (Developers → Webhooks, Show secret) after confirming it's them.
- A retry with the same Idempotency-Key returns the same webhook without its
secretfield: the secret is shown once. If the first response was lost, rotate it, or have an owner show it again in the dashboard. - PATCH /api/v1/webhooks/{id} updates url/events/is_active, or pass rotate_secret: true to issue a new signing secret.
- DELETE /api/v1/webhooks/{id} removes the subscription.
curl -X POST "https://app.blueticked.com/api/v1/webhooks" \
-H "Authorization: Bearer $BLUETICKED_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: change-me-per-request-0001" \
-d '{
"url": "https://api.example.com/blueticked/events",
"events": [
"message.delivered",
"message.failed",
"message.received"
],
"description": "Production event handler"
}'Response
{
"webhook": {
"description": null,
"auto_disabled_at": null,
"auto_disabled_reason": null,
"created_at": "2026-10-11T08:00:00.000Z",
"updated_at": "2026-10-11T08:00:00.000Z",
"id": "9a342329-d651-4da0-a2d6-b24e4d3599b5",
"url": "https://api.example.com/blueticked/events",
"events": [
"message.delivered",
"message.failed",
"message.received"
],
"is_active": true,
"secret": "whsec_..."
},
"request_id": "req_b2e3d610e10f1b07468721ee98f0e1d2"
}