Webhooks
Webhooks are the recommended way to receive asynchronous notifications about Business API operations. They are driven by the task system and delivered by the WebhookService with retry and detailed audit logging.Webhook lifecycle
The webhook flow is:- Trigger event – a file task or main task transitions state.
- Prepare payload – the system builds a JSON payload and HMAC signature headers.
- Send to client – an HTTP request is made to your registered
webhook_url. - Log to audit table – each attempt is recorded with status, payload, response, and error.
- Retry (optional) – failed deliveries are retried until the configured limit is reached.
WEBHOOK_AUDIT_LOGS table, including status, attempt number, response status, and any error message.
Registering webhooks
Webhooks can be registered or managed in two ways:- Via
POST /v1/developer/generate-api-keyby passing awebhook_url(and optionalwebhook_secret). - Via dedicated developer webhook endpoints:
POST /v1/developer/webhooksGET /v1/developer/webhooksDELETE /v1/developer/webhook/:webhookIdGET /v1/developer/webhooks/audit
All /v1/developer/* routes require authenticated user JWTs (not API keys).
Events
From the Business API design, the main events are:operation.completed– main task finished (all file tasks completed or partially completed).operation.failed– main task failed (all file tasks failed).fileTask.completed– individual file task completed.fileTask.failed– individual file task failed.
operation.completed / partially completed
fileTask.completed
fileTask.failed
Delivery & retries
The webhook audit and retry flow (simplified from the design docs):- On each attempt, a row is inserted into
WEBHOOK_AUDIT_LOGSwith:event_typetarget_urlpayloadresponse_statusattempt_numberstatus(success/failed)error_messagesent_at
- If retries are enabled, failed attempts are rescheduled until either:
- A retry succeeds.
- The max retry count is reached.
GET /v1/developer/webhooks/audit.
Security
When awebhook_secret is configured, webhooks are signed with an HMAC (exact header and algorithm are implementation details, typically X-D3-Signature with an HMAC‑SHA256 over the request body).
Recommended best practices:
- Always validate signatures using the shared
webhook_secret. - Use HTTPS for webhook endpoints.
- Treat webhook bodies as event notifications and fetch sensitive data via the Business API where needed.