API Reference

Receiving Events

call.endedbeta

This feature is in private beta. Contact technical support to request access for your workspace.

call.ended reports the end of a managed call, with data.call.id, reason and duration_seconds. Beta workspaces can receive it through subscribed_events containing call.ended or *, or an empty/omitted list.

Event payload

{
  "id": "evt_call_example",
  "type": "call.ended",
  "provider": "whatsapp",
  "account_id": "acc_example",
  "occurred_at": "2026-10-10T12:00:42Z",
  "data": {
    "call": {
      "id": "call_example",
      "direction": "outbound",
      "media_type": "voice",
      "state": "ended"
    },
    "reason": "remote_hangup",
    "duration_seconds": 42
  }
}

Notes

  • call.ended reports the end of a managed call, with data.call.id, reason and duration_seconds. Beta workspaces can receive it through subscribed_events containing call.ended or *, or an empty/omitted list.
  • Call-event access is controlled by workspace is_beta. In beta workspaces, * and empty or omitted subscribed_events include call events; specific lists match only their listed events. Non-beta workspaces may use wildcard subscriptions but never receive call events; explicitly subscribing to call events returns 403 beta_feature_not_enabled. Eligibility is rechecked for every delivery, retry and dead-letter replay; lookup failures do not grant access. Ordinary message.* call records are independent.
  • duration_seconds measures connected time rounded down to whole seconds; 0 does not prove the call was unanswered. Track call.answered as well. A synchronous creation error may have no call.ended event. This event is not a chat system message.