close_reason is how a call or chat ended. It is on the call record, in the session.completed webhook, a filter on GET /v1/calls?close_reason=…, and, grouped into buckets, in the observability endings and close_reason_data. Every surface also returns close_reason_label, the sentence shown below; display that instead of mapping strings yourself.
user_initiated means the agent hung up (an end_call operation), not the caller. The caller hanging up is participant_disconnected.

Buckets

Platform fee

The platform fee is waived when the reason ends in _failed or is one of error, stale, job_shutdown, job crashed, orphaned, unknown, avatar_start_failed, invalid_dispatch_metadata, missing_dispatch_metadata, unknown_tenant, missing_published_definition, rejected, insufficient_credits. Every other reason, and a missing one, is charged. Provider cost is always yours. Bucket and fee are independent: avatar_disconnected is a platform fault and still charged. See costs.

normal

transferred

caller_unreachable

Set from the carrier’s SIP response to an outbound dial, except voicemail. A call batch re-dials these when max_attempts allows, except sip_declined_failed and sip_unallocated_failed, which it never re-dials.

carrier_fault

Ten consecutive batch calls ending in carrier_fault, configuration, platform or other stop a call batch (batch.failed). caller_unreachable never counts.

configuration

platform

other

Any reason not listed above is bucketed other and shown raw; its label is the reason de-underscored and capitalized (some_new_reason → Some new reason). Reasons you may see here include sip_client_initiated_failed (The caller’s phone ended the call), sip_user_rejected_failed (The call was declined) and sip_unknown_reason_failed (The phone leg dropped for an unknown reason). A terminal session with no reason reads No ending was recorded.

Chats

A chat ends with end_call, api_end, replaced, messages_off or inactivity_timeout, all normal, and is charged per answered message whichever way it ended. See text conversations.