The CallAttempt object
One dial of a call's phone number, with what answered, the transcript, the recording and the extracted data. A call makes one or more attempts.
Fields
idstringThe ID of the call attempt.
Example
"c41f9a2e-7d3b-4e85-a6f0-1b2c3d4e5f60"phone_numberstringThe phone number that was called, in E.164 format.
Example
"+33612345678"statusenum (5 values)Where the attempt stands.
"queued"Created: the phone is not ringing yet.
"ringing"Dialed: the phone is ringing.
"ongoing"Answered: the conversation is in progress.
"completed"Final. The line connected and the attempt ended: see result, ended_by and end_reason.
"error"Final. The attempt could not connect: see dial_error.
dial_errorenum (10 values)nullableWhy the call could not be connected, from the carrier's SIP response (e.g. busy, no_answer, number_non_attributed for a number that does not exist). Null when the call connected or no SIP error was reported.
"number_non_attributed"The number does not exist or is not assigned (SIP 404). The call ends as errored, without retry.
"too_many_calls"The carrier refused the call: too many calls (SIP 429).
"busy"The line was busy (SIP 486).
"temporarily_unavailable"The phone could not be reached, e.g. switched off or out of coverage (SIP 480).
"no_answer"Nobody answered before the ringing timed out.
"rejected"The call was declined, by the person or by an anti-spam filter of their carrier (SIP 603).
"blocked"The carrier blocked the call ('Network Blocked').
"no_international_permission"The destination cannot be called from the caller number (SIP 403). The call ends as errored.
"precondition_failed"The carrier refused the call setup (SIP 412).
"non_classified_error"Another error, not classified.
resultenum (5 values)nullableWhat answered the call. Null until the call was analysed, and when nobody answered.
"IVR"An automated phone menu answered (e.g. 'press 1 for sales').
"voicemail"A voicemail or an answering machine answered.
"human"A person answered.
"unknown"Silence, or audio that could not be classified.
"screening-filter"A call screening assistant (Apple or Google) answered for the person and asked who is calling and why.
recording_urlstringnullableURL of the audio recording of the attempt (a WAV file). Null until the recording is ready, and when there is none.
Example
"https://recordings.example.com/7c9e6679-7425-40de-944b-e07fc1f90ae7.wav"started_atstring (date-time)nullableWhen the attempt was dialed. Null until it is.
Example
"2026-11-09T08:30:02Z"answered_atstring (date-time)nullableWhen the call was picked up. Null when it was not.
Example
"2026-11-09T08:30:09Z"ended_atstring (date-time)nullableWhen the attempt ended. Null until it does.
Example
"2026-11-09T08:31:47Z"transcriptarray of objectoptionalnullableThe live transcript of the call, built as the conversation goes. Null or empty when nobody talked.
post_call_transcriptarray of objectoptionalnullableA more accurate transcript, made from the recording after the call. Null until it is ready, and when there is no recording.
structured_outputobject<string, any JSON value>optionalnullableThe data extracted from this attempt's conversation, one entry per field of the assistant's structured_output_config. Null until extracted, and when the assistant extracts nothing.
Keys: Name of a field of the assistant's structured_output_config.
assistants_usedarray of stringoptionalnullableIDs of the assistants the attempt went through, in order: several for a multi-step flow.
assistant_namesobject<string, string>optionalNames of the assistants in
assistants_used, keyed by ID. Only set when the attempt went through several assistants (a multi-step call).Keys: ID of an assistant of assistants_used.
ended_by"agent" | "user" | "system"optionalnullableWho ended the call. Null when the call was never picked up.
"agent"The AI agent hung up (see end_reason).
"user"The other party hung up, or the line dropped on their side.
"system"Revox ended the call, e.g. at a time limit.
end_reasonenum (17 values)optionalnullableWhy the call ended, along with ended_by. Null when not reported.
"client_initiated"The other party hung up.
"connection_timeout"The phone connection timed out.
"human_takeover"A person from your team had taken over the call, and the call ended.
"ivr_no_navigate"A phone menu answered and the agent hung up: it was not set to navigate menus (ivr_navigation_enabled).
"max_duration"The call reached the assistant's max_call_duration_secs: the agent said max_duration_end_message, if set, and hung up.
"participant_removed"The phone line was removed from the call by the server.
"sip_trunk_failure"The phone carrier's line failed during the call.
"tool_end_call"The agent decided the conversation was over and hung up.
"transfer"The call was transferred to one of transfer_destinations.
"user_inactive"The agent hung up because the other party stopped responding.
"user_rejected"The other party declined the call.
"user_unavailable"The other party could not be reached.
"voicemail"A voicemail answered: the agent hung up, after leaving voicemail_message when one is set.
"speed_dial_abandoned"Speed dial session: another contact answered first, so this answered call was hung up.
"speed_dial_operator_missed"Speed dial session: a person answered, but the operator did not join in time.
"speed_dial_timeout"Speed dial session: the call hit its time limit before an operator was connected.
"speed_dial_hangup"Speed dial session: the person hung up before being put through to the operator.
transferred_tostringoptionalnullableThe number the call was transferred to, in E.164 format (e.g. +33123456789). Recorded by the agent from the destination it actually dialled, so it is the destination itself and not a name read off the transcript. Null when the call was not transferred, and on transfers placed before this was tracked.
Example
nullhandled_by_humanbooleanWhether a person from your team took part in this attempt: they joined the call live from the dashboard, or the call was transferred to them.
handled_by_aibooleanWhether the AI agent conducted the conversation on this attempt. False for attempts that were never answered, and for speed dial calls, where the agent only listens for a person before handing over.
handled_by_userobjectnullableThe person from your team who took over this attempt live from the dashboard. Null when nobody did, and for takeovers recorded before this was tracked.
sms_logarray of objectoptionalnullableEvery SMS sent in connection with the call (by the agent during the call, after a voicemail, after the call), oldest first.
actionsarray of objectoptionalnullableTools the agent ran for this attempt, in call and after it, ordered oldest first. This is the decision trail; what was delivered is in
sms_logandemail_log.email_logarray of objectoptionalnullableNotification emails sent in connection with the call, ordered oldest first (from/to addresses, subject, sent time).