For calls started via direct session join (without ringing), see Call Session Events.
call_initiated
Triggered when a user initiates a call to another user or group. Idempotency Key:webhook + trigger + data.call.id + data.call.sentAt
call_started
Triggered when the call session begins (first participant joins after accepting). Idempotency Key:webhook + trigger + data.sessionId + data.created_at
call_participant_joined
Triggered when a participant joins the active call. Idempotency Key:webhook + trigger + data.sessionId + data.occupant.joined_at
call_participant_left
Triggered when a participant leaves the active call. Idempotency Key:webhook + trigger + data.sessionId + data.occupant.left_at
call_ended
Triggered when the call session ends (all participants have left). Idempotency Key:webhook + trigger + data.sessionId + data.destroyed_at
call_busy
Triggered when a 1-on-1 call cannot connect because the recipient is already on another call.This event is exclusive to 1-on-1 calls. In group calls, all participants can join at any time, so a “busy” state does not apply.
webhook + trigger + data.call.id + data.call.sentAt
call_cancelled
Triggered when the caller cancels the call before it is answered. Idempotency Key:webhook + trigger + data.call.id + data.call.sentAt
call_rejected
Triggered when the recipient explicitly rejects a 1-on-1 call.In group calls, this event is not triggered — the call remains active as long as at least one member joins.
webhook + trigger + data.call.id + data.call.sentAt
call_unanswered
Triggered when a call goes unanswered. For group calls, this fires only if no members join at all. Idempotency Key:webhook + trigger + data.call.id + data.call.sentAt