fire_condition is set, an EU-resident LLM evaluates it against the call (summary/transcript/structured data) after the call to decide whether the webhook fires; leave it empty to always fire. If body_template is null, the standard enriched call-data payload is sent; otherwise the JSON template is rendered with {{key}} placeholders. The URL is SSRF-validated (HTTPS only, no private/link-local hosts).curl --location 'https://api.snakk.ai/api/end-of-call-webhooks' \
--header 'X-API-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"agent_id": "a0000000-1111-2222-3333-444455556666",
"name": "Send to CRM",
"url": "https://example.com/webhooks/post-call",
"method": "POST",
"headers": {
"Authorization": "Bearer ***"
},
"body_template": {
"summary": "{{summary}}",
"phone": "{{phone_number}}"
},
"fire_condition": "Only fire if the caller booked an appointment",
"enabled": true
}'{
"webhook": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"agent_id": "2b1e3b65-2c04-4fa2-a2d7-467901e98978",
"tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
"name": "string",
"url": "http://example.com",
"method": "GET",
"headers": {
"property1": "string",
"property2": "string"
},
"body_template": {
"property1": "string",
"property2": "string"
},
"fire_condition": "string",
"enabled": true,
"sort_order": 0,
"created_at": "2019-08-24T14:15:22.123Z",
"updated_at": "2019-08-24T14:15:22.123Z"
}
}