Webhooks
Inbound webhooks from telephony providers, outbound reporting webhooks, and event callbacks.
Inbound webhooks (from telephony providers)
These endpoints are called by telephony providers (Twilio, Plivo, Exotel) during call lifecycle events. They are configured automatically when you set up a provider.
Call Answered
/{provider}/answer Call Status Callback
/{provider}/callback/status Call Details Callback
/{provider}/callback/details Warm Transfer Callbacks
/{provider}/callback/transfer/status /{provider}/callback/transfer/events Provider Placeholder
Replace {provider} with the actual provider name: twilio, plivo, or exotel.
Outbound webhooks (to external systems)
Breeze Buddy sends webhook notifications to your systems at various points in the call lifecycle.
Reporting webhook
The reporting_webhook_url supplied at push time is stored inside the lead’s payload dict and called after the call finishes. Successful and failing calls produce different payload shapes.
Successful completion — called when the conversation reaches end_conversation cleanly.
{
"orderId": "req_unique_001",
"leadId": "2b4e3e4a-9c5e-4b6a-ae7f-3d8e2c1a5b77",
"callSid": "CA1234567890abcdef",
"outcome": "confirmed",
"status": "FINISHED",
"attemptCount": 1,
"transcription": [
{ "role": "assistant", "content": "Hello Rahul..." },
{ "role": "user", "content": "Yes, that works." }
],
"recordingUrl": "https://storage/.../recording.mp3",
"completedAt": "2026-02-01T10:36:15Z"
}Failure — called when the call fails for any reason (pre-check skip, no answer, telephony error).
{
"orderId": "req_unique_001",
"leadId": "2b4e3e4a-9c5e-4b6a-ae7f-3d8e2c1a5b77",
"outcome": "PRECHECK_FAILED",
"attemptCount": 1,
"failureReason": "DND Check returned blocked=true"
}Field names are camelCase. The full final lead record is available via GET /leads/{id} — the webhook is a push notification; fetch the full state if you need more than what arrives.
Webhook retry behaviour
There is no exponential backoff. send_webhook_with_retry attempts up to 3 deliveries back-to-back with no inter-attempt delay. If the receiver is rate-limiting or momentarily slow, the three retries all fail within the same second. Design your receiver to be idempotent on orderId/leadId — the same webhook can arrive twice if an upstream retry kicks in.
Service Callback
The service_callback is an end-of-conversation callback triggered when the voice pipeline finishes processing. Delivers the final conversation state to the configured endpoint.
Hook HTTP Requests
Templates can define HTTP request hooks on functions. When a function is triggered during conversation, its HTTP hook fires — enabling real-time CRM updates, database writes, or third-party API calls.
{
"hooks": [
{
"name": "update_crm",
"http_request": {
"url": "https://your-crm.com/api/update",
"method": "POST",
"headers": { "Authorization": "Bearer {crm_token}" },
"body": {
"lead_id": "{lead_id}",
"outcome": "{outcome}"
}
}
}
]
}Variable Substitution
Hook HTTP request bodies support variable substitution using {variable_name} syntax. See Variable Substitution for details.
DevCycle webhooks
Breeze Buddy integrates with DevCycle for feature flag management. DevCycle sends webhook notifications when feature flags are updated, allowing the system to react to configuration changes in real time.
Error responses
| Status | Meaning | Common Cause |
|---|---|---|
400 | Bad Request | Malformed webhook payload from provider. |
404 | Not Found | Lead or call session not found for the callback. |
500 | Server Error | Internal processing error during webhook handling. |