Calls
Webhook events emitted through a call's lifecycle. The payload shape depends on the webhook version pinned on the owning Voice App or SIP Trunk. Every event below shows both versions.
call.initiated
Triggered when a new call has been initiated.
- 2026-06-01
- 2025-08-01
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "call.initiated",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:30:45.100Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"from": "+91XXXXXXXXXX",
"to": "+91XXXXXXXXXX",
"direction": "outbound",
"start_time": "2026-06-01T11:30:45.100Z"
},
"previous_attributes": null
}
{
"event": "call.initiated",
"account_id": "<uuid>",
"call_app_id": "<uuid>",
"data": {
"call_id": "<uuid>",
"from": "+91XXXXXXXXXX",
"to": "+91XXXXXXXXXX",
"direction": "outbound",
"start_time": "2026-04-27T11:30:45Z"
}
}
call.ringing
Triggered when the callee's phone starts ringing (outbound) or when Teler starts routing an inbound call.
Only emitted on 2026-06-01.
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "call.ringing",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:30:46.220Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"direction": "outbound"
},
"previous_attributes": null
}
call.answered
Triggered when the called party picks up. Not delivered if the call fails before answer.
- 2026-06-01
- 2025-08-01
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "call.answered",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:30:48.412Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"answered_at": "2026-06-01T11:30:48.412Z"
},
"previous_attributes": null
}
{
"event": "call.answered",
"account_id": "<uuid>",
"call_app_id": "<uuid>",
"data": {
"call_id": "<uuid>",
"from": "+91XXXXXXXXXX",
"to": "+91XXXXXXXXXX",
"direction": "outbound",
"start_time": "2026-04-27T11:30:45Z",
"answer_time": "2026-04-27T11:30:48Z"
}
}
answered_at on 2026-06-01 replaces answer_time on 2025-08-01.
call.completed
Triggered when an answered call ends normally.
- 2026-06-01
- 2025-08-01
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "call.completed",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:32:18.501Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"ended_at": "2026-06-01T11:32:18.501Z",
"duration_seconds": 90,
"reason": "callee_hangup",
"ended_by": "callee"
},
"previous_attributes": null
}
{
"event": "call.completed",
"account_id": "<uuid>",
"call_app_id": "<uuid>",
"data": {
"call_id": "<uuid>",
"from": "+91XXXXXXXXXX",
"to": "+91XXXXXXXXXX",
"direction": "outbound",
"start_time": "2026-04-27T11:30:45Z",
"answer_time": "2026-04-27T11:30:48Z",
"hangup_time": "2026-04-27T11:32:18Z",
"duration": 90,
"hangup_source": "callee"
}
}
Field renames on 2026-06-01: hangup_time → ended_at, duration → duration_seconds, hangup_source → ended_by. New field: reason.
call.failed
Triggered when a call cannot be completed. Replaces call.completed for unsuccessful calls.
- 2026-06-01
- 2025-08-01
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "call.failed",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:30:55.220Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"ended_at": "2026-06-01T11:30:55.220Z",
"reason": "no_answer",
"ended_by": "system"
},
"previous_attributes": null
}
{
"event": "call.failed",
"account_id": "<uuid>",
"call_type": "string",
"call_app_id": "<uuid>",
"data": {
"call_id": "<uuid>",
"from": "+91XXXXXXXXXX",
"to": "+91XXXXXXXXXX",
"direction": "outbound",
"start_time": "2026-04-27T11:30:45Z",
"hangup_time": "2026-04-27T11:30:55Z",
"hangup_source": "system",
"failure": {
"code": 487,
"reason": "request_terminated"
}
}
}
Notes
Timestamp fields such as start_time, answered_at / answer_time, and ended_at / hangup_time are included based on call state. If a call fails before being answered, answered_at / answer_time are absent. Treat missing as unset, not falsy.
On 2026-06-01, ended_by values are caller, callee, or system. On 2025-08-01, the equivalent field is hangup_source with the same three values, except platform is used instead of system on some 2025-08-01 events.