Create an endpoint
POST
/v1/webhooksSecret key — sk_… or sk_test_… · Base URL https://api.volanea.com
Registers a URL to receive event deliveries. The response includes the signing secret (whsec_…). Deliveries retry with backoff for ~24h and carry X-Volanea-Signature: t=<ms>,v1=<hmac-sha256 hex of "<t>.<body>">.
Body
Required · application/json
urlurirequireddescriptionstringeventsstring[]Patterns like `"email.*"` or exact names. Omit for all events.
Response
201 · WebhookEndpoint
webhookEndpointIdstringrequiredprojectIdstringurlurirequireddescriptionstring | nullsecretstringrequired`whsec_…` — used to HMAC-SHA256-sign every delivery (`X-Volanea-Signature: t=<ms>,v1=<hex>` over `<t>.<body>`).
eventsarray | nullEvent name patterns, e.g. `["email.*", "contact.created"]`. Empty or null = all events.
enabledbooleanrequiredcreatedAtdate-timerequired
Errors
Every failure returns the standard envelope — branch on `code`, never on the wording of `error`.
401Missing or invalid API key.422Request validation failed (code `validation_error`, 422).
Request
curl https://api.volanea.com/v1/webhooks \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://yourapp.com/hooks/volanea",
"description": "What this is for",
"events": [
"<events>"
]
}'Response
201 · application/json
{
"success": true,
"data": {
"webhookEndpointId": "<webhookEndpointId>",
"projectId": "<projectId>",
"url": "https://yourapp.com/hooks/volanea",
"description": "What this is for",
"secret": "<secret>",
"events": [
"<events>"
],
"enabled": true,
"createdAt": "2026-01-01T09:00:00.000Z"
}
}92 endpoints · OpenAPI document