API reference / JSON:API
post
/v3/webhooksSubscribe a URL
- Operation
v3CreateWebhook- Authentication
- API key
**The one `/v3` surface that is not drop-in, and the 400s say why.** `secret` is refused — we generate and rotate it, because a caller-chosen secret is a caller-chosen strength. `frequency` is refused — we deliver on the event with signed retries, and there is no batch schedule to configure. `events` uses our fifteen lifecycle names; their catch-all `travel_restriction_all` has no equivalent, so a migrating partner edits config, not code.
Request
Body
dataobjectrequiredResponses
201The created webhook. `attributes.secret` is returned exactly once, here, and is never readable again.
metaobjectrequireddataJsonApiResourcerequired400A malformed parameter, or a filter/include/language this endpoint cannot honour. Refused rather than ignored: an ignored filter returns a full answer that looks filtered.
errorsobject[]required401No key, an unknown key, a revoked key, or an inactive tenant.
errorsobject[]required403The key is valid but does not hold `webhooks:write`.
errorsobject[]requiredExample
curl -X POST https://api.haavisa.com/v3/webhooks \
-H "Authorization: Bearer $HAAVISA_API_KEY"More in JSON:API
Something unclear? The eligibility guide explains the model behind the answers; the errors guide covers the envelope.