Create an endpoint

POST/v1/webhooks

Secret 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

  • urlurirequired
  • descriptionstring
  • eventsstring[]

    Patterns like `"email.*"` or exact names. Omit for all events.

Response

201 · WebhookEndpoint

  • webhookEndpointIdstringrequired
  • projectIdstring
  • urlurirequired
  • descriptionstring | null
  • secretstringrequired

    `whsec_…` — used to HMAC-SHA256-sign every delivery (`X-Volanea-Signature: t=<ms>,v1=<hex>` over `<t>.<body>`).

  • eventsarray | null

    Event name patterns, e.g. `["email.*", "contact.created"]`. Empty or null = all events.

  • enabledbooleanrequired
  • createdAtdate-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