Instant Outbound webhook payload

The payload Sarvam POSTs to your webhook after an instant outbound call attempt.
View as Markdown

After each instant outbound call attempt completes — whether or not it connected — Sarvam sends a POST request to the webhook URL you provided in webhook_config when creating the call. Use this to track call outcomes, sync agent-extracted data to your systems, and trigger downstream workflows.

Payload schema

FieldTypeDescription
attempt_idstring (required)Unique identifier for this call attempt. Matches the attempt_id returned in the Create Instant Outbound Call response.
statusstring (required)Outcome of the call attempt. One of connected, no_answer, busy, failed (see below).
channel_infoobject (required)Information about the telephony channel used for the call.
durationnumber | nullCall duration in seconds. null if the call did not connect.
interaction_idstring | nullUnique interaction ID for retrieving transcripts and recordings via the Analytics API. null if the call did not connect.
failure_reasonstring | nullHuman-readable reason for failure, typically prefixed with the provider name (e.g. "exotel: Phone number is registered under TRAI NDNC"). null on successful or unanswered calls.
final_agent_variablesobject | nullAgent variables at the end of the conversation, containing any data extracted or updated during the call. null if the call did not connect.
webhook_configobject | nullThe webhook configuration passed when creating the call, echoed back for correlation.
interaction_transcriptarray | nullTranscript of the conversation as a list of turns. null if the call did not connect.

status values

ValueMeaning
connectedCall was answered and a conversation took place.
no_answerThe recipient did not pick up.
busyThe recipient’s line was busy.
failedCall could not be placed (provider error, invalid number, and so on).

channel_info properties

FieldTypeDescription
channel_typestring (required)Type of communication channel. One of "v2v", "whatsapp".
channel_providerstring (required)Telephony provider used to place the call (e.g. "exotel", "twilio").
agent_phone_numberstring (required)Phone number used by the agent for this call, in E.164 format.

webhook_config properties

FieldTypeDescription
urlstring (required)The webhook URL the payload was delivered to.
metadataobject | nullCustom metadata you attached to the webhook configuration. Useful for passing through external IDs or routing tags.

interaction_transcript item

FieldTypeDescription
rolestring (required)Speaker role — "agent" or "user".
en_textstring (required)English text of the turn (translated if the conversation was in another language).

Examples

Connected call

1{
2 "attempt_id": "44b4f89d-252b-4585-ad2e-0ed5842cc6c5",
3 "status": "connected",
4 "channel_info": {
5 "channel_type": "v2v",
6 "channel_provider": "exotel",
7 "agent_phone_number": "+91804XXXXXXX"
8 },
9 "duration": 16.83,
10 "interaction_id": "20250920/1ae056a30013510b66a6a0",
11 "failure_reason": null,
12 "final_agent_variables": {
13 "customer_name": "Amit",
14 "disposition": "NA",
15 "call_step": "IDENTITY VERIFIED",
16 "tenure": "10 years"
17 },
18 "webhook_config": {
19 "url": "https://your-server.example.com/webhook",
20 "metadata": null
21 },
22 "interaction_transcript": [
23 { "role": "agent", "en_text": "Hello, am I speaking with Amit?" },
24 { "role": "user", "en_text": "Yes, this is Amit." },
25 { "role": "agent", "en_text": "Great, I'm calling regarding your account. Could you confirm your date of birth for verification?" },
26 { "role": "user", "en_text": "Sure, it's 15th March 1990." }
27 ]
28}

No answer

1{
2 "attempt_id": "df5b6536-5130-4a43-bc5d-6771d1f93355",
3 "status": "no_answer",
4 "channel_info": {
5 "channel_type": "v2v",
6 "channel_provider": "exotel",
7 "agent_phone_number": "+91804XXXXXXX"
8 },
9 "duration": null,
10 "interaction_id": null,
11 "failure_reason": null,
12 "final_agent_variables": null,
13 "webhook_config": {
14 "url": "https://your-server.example.com/webhook",
15 "metadata": null
16 },
17 "interaction_transcript": null
18}

Provider failure

1{
2 "attempt_id": "951e49d8-d9a5-45a9-aed4-c42366d29129",
3 "status": "failed",
4 "channel_info": {
5 "channel_type": "v2v",
6 "channel_provider": "exotel",
7 "agent_phone_number": "+91804XXXXXXX"
8 },
9 "duration": null,
10 "interaction_id": null,
11 "failure_reason": "exotel: Phone number is registered under TRAI NDNC",
12 "final_agent_variables": null,
13 "webhook_config": {
14 "url": "https://your-server.example.com/webhook",
15 "metadata": null
16 },
17 "interaction_transcript": null
18}

The webhook_config object is echoed back in every payload. If you passed custom metadata when creating the call, it appears here — useful for correlating webhooks with your internal records.