Skip to navigation

Instant outbound call 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

{
"attempt_id": "44b4f89d-252b-4585-ad2e-0ed5842cc6c5",
"status": "connected",
"channel_info": {
"channel_type": "v2v",
"channel_provider": "exotel",
"agent_phone_number": "+91804XXXXXXX"
},
"duration": 16.83,
"interaction_id": "20250920/1ae056a30013510b66a6a0",
"failure_reason": null,
"final_agent_variables": {
"customer_name": "Amit",
"disposition": "NA",
"call_step": "IDENTITY VERIFIED",
"tenure": "10 years"
},
"webhook_config": {
"url": "https://your-server.example.com/webhook",
"metadata": null
},
"interaction_transcript": [
{ "role": "agent", "en_text": "Hello, am I speaking with Amit?" },
{ "role": "user", "en_text": "Yes, this is Amit." },
{ "role": "agent", "en_text": "Great, I'm calling regarding your account. Could you confirm your date of birth for verification?" },
{ "role": "user", "en_text": "Sure, it's 15th March 1990." }
]
}

No answer

{
"attempt_id": "df5b6536-5130-4a43-bc5d-6771d1f93355",
"status": "no_answer",
"channel_info": {
"channel_type": "v2v",
"channel_provider": "exotel",
"agent_phone_number": "+91804XXXXXXX"
},
"duration": null,
"interaction_id": null,
"failure_reason": null,
"final_agent_variables": null,
"webhook_config": {
"url": "https://your-server.example.com/webhook",
"metadata": null
},
"interaction_transcript": null
}

Provider failure

{
"attempt_id": "951e49d8-d9a5-45a9-aed4-c42366d29129",
"status": "failed",
"channel_info": {
"channel_type": "v2v",
"channel_provider": "exotel",
"agent_phone_number": "+91804XXXXXXX"
},
"duration": null,
"interaction_id": null,
"failure_reason": "exotel: Phone number is registered under TRAI NDNC",
"final_agent_variables": null,
"webhook_config": {
"url": "https://your-server.example.com/webhook",
"metadata": null
},
"interaction_transcript": null
}

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.