Create a webhook ownership challenge
const url = 'https://api.katara.com/katara/v1/notification-webhooks';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","org_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","environment_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","destination":"https://example.com","event_types":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.katara.com/katara/v1/notification-webhooks \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "org_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "environment_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "destination": "https://example.com", "event_types": [ "example" ] }'Requires a signed-in session. Repeating the same id and body recovers setup without returning the signing secret again. A changed body conflicts. Serve the exact returned document at the fixed verification URL; it must remain available throughout delivery. Creation does not activate external delivery.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Required for cookie-authenticated changes. Use the UUID of the account that loaded the application. A different current cookie account returns account_changed before the handler runs. Session bearer and API key clients do not require this header.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Immutable public HTTPS endpoint. Userinfo, query strings, fragments, private networks and redirects are refused.
Explicit event catalog types. Delivery also requires the recipient category/channel preference.
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "org_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "environment_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "destination": "https://example.com", "event_types": [ "example" ]}Responses
Section titled “Responses”Current subscription state. Responses are never cached.
object
object
object
32 random bytes encoded as unpadded base64url. Returned once on first create or rotation. Store privately; GET, list and create replay never return it.
Example
{ "subscription": { "mode": "test", "state": "pending" }, "verification_document": { "profile": "katara-notification-ownership/v1" }}Invalid request.
Current owner/admin recipient in a signed-in session required.
Subscription unavailable in the current scope.
Subscription changed or is in an incompatible state.