What is a Webhook?
A webhook lets Vaani push call events to your server in real time — no polling required. You’ll receive an HTTP POST request to your endpoint whenever a call lifecycle event occurs (e.g. call started, ended, transferred, or post-processed).Event Types
Vaani fires webhooks for both outbound and inbound calls.Setup
1
Create a Webhook Endpoint
Set up an HTTP endpoint on your server that accepts POST requests and returns
200 OK.2
Register the Webhook in the Dashboard
Go to Settings → Webhooks and add your endpoint URL.

Your webhook endpoint must be publicly accessible. For local development, use a tunnel like ngrok.
Payload Reference
Outbound Call Events
call_started
Fired as soon as the SIP participant joins the room and the call begins dialing.
call_ringing
Fired when the carrier reports the phone is actively ringing at the destination.
Lifecycle Success Events
user_picked_up_at
Fired when the user answers and media starts flowing.
Lifecycle Terminal Errors (Outbound Only)
call_rejected
Fired if the user manually rejects the call (SIP 486 or 603 Busy).
call_no_answer
Fired if the call rings until carrier timeout (typically 45–60 s) without answer.
call_failed
Fired for abrupt SIP errors, technical failures, or invalid destination numbers.
Human Agent Transfer Events
human_transfer_initiated
Fired when the AI agent triggers the transfer_call tool to hand off the session.

