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"
}
| Field | Type | Description |
|---|---|---|
callId | string | The call id — matches call history, reports, and GET /calls/{callid}/recordings. Keep it a string. |
UniqueId | string | The leg identifier. Note the capital U — this field alone is not camelCase. |
direction | string | inbound or outbound. |
status | string | The state this event reports — ringing, answered, hung up. |
sendType / sendName / sendNumber | string | The originating party and what kind of thing it is (external, user, queue…). |
destinationType / destinationName / destinationNumber | string | The party being reached. |
calledType / calledNumber | string | What was dialled — for an inbound call, the DID. |
callerName / callerNumber / calledName | string | Canonical party fields, shared across every event type. Aliases of the send/destination fields above. |
callerIdInternal / callerIdExternal | string | The internal extension and the external number presented. |
callerNameInternal / callerNameExternal | string | The corresponding names. |
startTime | string | RFC 3339 UTC — when this leg started. |
callStartTime | string | RFC 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
AccountEndedCallsfor the record of what occurred. - Internal legs carry extensions, not phone numbers.
204is 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.