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

{
"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.