API reference / Webhooks
/v2/webhook-endpointsRegister a webhook endpoint
- Operation
createWebhookEndpoint- Authentication
- API key
Every delivery is signed with `X-Haavisa-Signature: t=<unix>,v1=<hex>`, an HMAC-SHA256 over `{timestamp}.{body}` using the endpoint secret. **Verify the timestamp as well as the signature** — a signature check alone proves authenticity, not freshness, and would accept a replay of a captured delivery. `X-Haavisa-Delivery` is the id to deduplicate on: delivery is at-least-once, so the same event will occasionally arrive twice.
Request
Body
urlstringrequiredHTTPS required outside development. A delivery carries an applicant’s details and the outcome of their application.
descriptionstringeventsstring[]requiredResponses
endpointWebhookEndpointrequiredsecretstringrequiredThe HMAC signing secret. Unlike an API key this is recoverable — we sign every delivery with it — but a partner who never sees it cannot verify anything we send.
warningstringrequirederrorobjectrequirederrorobjectrequirederrorobjectrequirederrorobjectrequiredExample
curl -X POST https://api.haavisa.com/v2/webhook-endpoints \
-H "Authorization: Bearer $HAAVISA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "<url>",
"events": []
}'More in Webhooks
Something unclear? The eligibility guide explains the model behind the answers; the errors guide covers the envelope.