Webhooks notify your server when events occur in Vocobase, such as a call completing. Instead of polling the API, you receive a POST request with the full event payload.
Use webhook endpoints to send the same event to one or more destinations, such as prod, staging, or an internal audit receiver. Each endpoint has its own URL, enabled flag, delivery history, and signing secret.
The response contains a secret that you must save:
{ "success": true, "data": { "id": "12345678-abcd-1234-abcd-123456789012", "label": "prod", "url": "https://your-server.com/webhooks/vocobase", "enabled": true, "last_delivery_at": null, "last_delivery_status": null, "created_at": "2026-05-25T10:30:00.000Z", "updated_at": "2026-05-25T10:30:00.000Z", "secret": "whsec_a1b2c3d4e5f6g7h8i9j0...", "message": "Save this secret — it will not be shown again." }}
The endpoint secret is only shown once. Store it in your environment variables immediately. If you lose it, rotate the endpoint secret with POST /config/webhooks/{id}/rotate-secret.
Labels must be lowercase letters, numbers, and hyphens; start with a letter or number; and be 1-31 characters.
The default label is reserved for the legacy single-webhook compatibility route.
Each partner can configure up to 5 webhook endpoints.
Only enabled endpoints receive new events.
Each endpoint signs requests with its own secret.
Existing integrations that use PUT /api/v2/config/webhook still work. That route now creates or replaces the reserved default endpoint and returns a webhook_secret. New integrations should use /config/webhooks.
Every webhook request includes an X-Webhook-Signature header for verifying authenticity. The signature is computed as an HMAC-SHA256 hash of timestamp.body using your webhook secret.