Skip to main content
A call ends and you want one answer. Did it connect, and if not, why not? The session status read carries everything you need, and the session detail repeats the same fields next to the transcript. Read this page once. Then trust the fields. Start with state. completed means the call ran and ended normally. failed means there was no conversation, and failureReason says why. endedBy, when present, says who hung up. Everything else on the record is detail.

The fields, and where each comes from

Three things to know before you build on these:
  • Switch on failureReason, show failureReasonWithCode. outcome is coarser. wrong_number, declined, network_error and call_failed all read failed there.
  • Read the record once state is terminal. call.completed is the cue. Before that, neither outcome nor endedBy is a verdict.
  • A silent pickup ends failed, not completed. The carrier answered, so connectedAt is set. Nobody spoke, so answeredAt is absent and connected is false.

Why it failed

The code after the colon in failureReasonWithCode is the carrier’s SIP response. Reasons without one carry no code. For campaign dialing, the default retry policy redials when outcome is no_answer, busy, voicemail, silent_pickup, failed or unreachable, up to three attempts. Here an unreachable phone is often only briefly off or out of coverage, so it earns a retry.

Who hung up

endedBy has three values you will see:
  • agent. The model called end_call, or the agent closed the call itself: an unanswered silence check, or a voicemail verdict.
  • callee. The customer hung up first.
  • system. We forced the close. Credits ran out mid-call, or the agent hit an error on our side.
supervisor is reserved. An outbound call that completed with answeredAt and no stamp reads callee. That covers calls from before we stamped it, and calls where the worker died before it could. On inbound and web sessions a caller hangup leaves endedBy absent. Only the agent and system stamps apply there.

The timestamps

createdAt, ringingAt, connectedAt, answeredAt and endedAt are the life of the call, and how it works draws them in order. dialingAt exists too, but our carrier rarely reports it. The full list, with what each one means while the call is live, is on phone call states.