Skip to main content

AccountRealTimeCalls

Fires while a call is in progress, as it changes state. This is the event for screen-pops, live wallboards and presence — anything that must react before the call ends.

:::danger This is the one event you cannot backfill Live call state has no REST equivalent. If your receiver was down when the call happened, it is gone. :::

Payload

{
"callId": "1754489201.884213",
"UniqueId": "1754489201.884213",
"direction": "inbound",
"status": "ringing",
"sendType": "external",
"sendName": "ACME ROOFING",
"sendNumber": "13475550123",
"destinationType": "user",
"destinationName": "Dana Spencer",
"destinationNumber": "204",
"calledType": "did",
"calledNumber": "12125550188",
"callerName": "ACME ROOFING",
"callerNumber": "13475550123",
"calledName": "Dana Spencer",
"callerIdInternal": "204",
"callerIdExternal": "12125550188",
"callerNameInternal": "Dana Spencer",
"callerNameExternal": "Acme Inc",
"startTime": "2026-08-11T13:20:01Z",
"callStartTime": "2026-08-11T13:19:58Z"
}
FieldTypeDescription
callIdstringThe call id — matches call history, reports, and GET /calls/{callid}/recordings. Keep it a string.
UniqueIdstringThe leg identifier. Note the capital U — this field alone is not camelCase.
directionstringinbound or outbound.
statusstringThe state this event reports — ringing, answered, hung up.
sendType / sendName / sendNumberstringThe originating party and what kind of thing it is (external, user, queue…).
destinationType / destinationName / destinationNumberstringThe party being reached.
calledType / calledNumberstringWhat was dialled — for an inbound call, the DID.
callerName / callerNumber / calledNamestringCanonical party fields, shared across every event type. Aliases of the send/destination fields above.
callerIdInternal / callerIdExternalstringThe internal extension and the external number presented.
callerNameInternal / callerNameExternalstringThe corresponding names.
startTimestringRFC 3339 UTC — when this leg started.
callStartTimestringRFC 3339 UTC — when the whole call started. Earlier than startTime on a transferred or queued call.

:::caution Two naming traps in one payload UniqueId is capitalized where every other field is camelCase — a JSON mapper with strict field names will silently leave it empty.

startTime and callStartTime are different instants. For "how long has this caller been waiting", you want callStartTime. :::

Two vocabularies for the same parties

sendNumber/destinationNumber are this event's own; callerNumber/calledNumber are canonical across every event type. Prefer the canonical pair so one mapping works everywhere.

Events are not ordered — a transferred call produces interleaved legs. Sort on startTime and key on callId + UniqueId + status.

Gotchas

  • A ringing call is not a call that happened. Do not write these to a call log — use AccountEndedCalls for the record of what occurred.
  • Internal legs carry extensions, not phone numbers. 204 is an extension; do not try to dial it externally or match it against a contacts table of phone numbers.
  • High volume. A busy account with queues produces a lot of these.