Logo
Search
API Docs

Ended Reason: Complete Reference

Inbound Call Handling

Ended Reason: Complete Reference

Overview

This page is the single, exhaustive reference of every endedReason value the Call object can return, organized by category. If you're troubleshooting a specific symptom (call never rang, dropped mid-conversation, assistant went silent), start with Troubleshooting Call Errors & Error Code Reference instead — it maps symptoms to likely codes and is a faster path to a fix. For timeout-specific settings, see Call Timeouts & Duration; for rate-limit-specific codes across LLM, voice, and transcriber providers, see Rate Limits & Error Codes. This page exists for code-by-code lookup once you already have a specific endedReason value in hand.


Call-Start Errors

These occur before the call ever connects to a phone network or web client:

Account & billing:

  • call.start.error-subscription-frozen
  • call.start.error-subscription-insufficient-credits
  • call.start.error-subscription-wallet-does-not-exist
  • call.start.error-subscription-upgrade-failed
  • call.start.error-subscription-concurrency-limit-reached
  • call.start.error-fraud-check-failed
  • call.start.error-enterprise-feature-not-available-recording-consent

Resource resolution:

  • call-start-error-neither-assistant-nor-server-set
  • call.start.error-get-org
  • call.start.error-get-subscription
  • call.start.error-get-assistant
  • call.start.error-get-phone-number
  • call.start.error-get-customer
  • call.start.error-get-resources-validation
  • call.start.error-get-transport
  • call.start.error-sulusfault-database-error

Phone number limits:

  • call.start.error-sulus-number-international
  • call.start.error-sulus-number-outbound-daily-limit

Assistant resolution via server URL (when your own server dynamically returns which assistant to use):

  • assistant-not-found
  • assistant-not-valid
  • assistant-request-failed
  • assistant-request-returned-error
  • assistant-request-returned-unspeakable-error
  • assistant-request-returned-invalid-assistant
  • assistant-request-returned-no-assistant
  • assistant-request-returned-forwarding-phone-number
  • scheduled-call-deleted

Assistant Actions & Customer Actions

Assistant actions — intentional endings, not errors:

  • assistant-ended-call
  • assistant-ended-call-after-message-spoken
  • assistant-ended-call-with-hangup-task
  • assistant-said-end-call-phrase
  • assistant-forwarded-call
  • assistant-join-timed-out

Customer actions:

  • customer-ended-call
  • customer-busy
  • customer-did-not-answer
  • customer-did-not-give-microphone-permission
  • call.in-progress.error-assistant-did-not-receive-customer-audio
  • customer-ended-call-before-warm-transfer
  • customer-ended-call-after-warm-transfer-attempt
  • customer-ended-call-during-transfer

Timeouts

  • exceeded-max-duration — the call hit its configured maxDurationSeconds cap
  • silence-timed-out — no speech was detected for the configured silence timeout

See Call Timeouts & Duration for how to configure the settings behind both of these.


Pipeline Errors: LLM, Voice & Transcriber

Pipeline error codes consistently follow an HTTP-status-code-based naming pattern, which makes them predictable across providers even though the exact provider varies by call.

LLM (language model):

  • *-400-bad-request-validation-failed
  • *-401-unauthorized / *-401-incorrect-api-key
  • *-403-model-access-denied
  • *-429-exceeded-quota / *-429-rate-limit-reached
  • *-500-server-error
  • *-503-server-overloaded-error
  • *-llm-failed
  • pipeline-no-available-llm-model / call.in-progress.error-pipeline-no-available-llm-model
  • call.in-progress.error-pipeline-ws-model-connection-failed

Voice (TTS):

  • *-voice-failed
  • *-voice-not-found / *-invalid-voice
  • *-quota-exceeded / *-out-of-credits
  • *-unauthorized-access / *-invalid-api-key
  • *-socket-hang-up / *-500-server-error / *-503-server-error

Note: some voice providers may also report a provider-specific "disabled by owner" style code when a given voice has been deliberately disabled on that provider's account. If you see an unfamiliar voice-related code in your logs, check your dashboard's call detail view for the exact string.

Transcriber (STT):

  • *-transcriber-failed
  • *-returning-400-*
  • *-returning-401-*
  • *-returning-403-*
  • *-returning-500-* / *-returning-502-*

Transfer Errors

  • call.in-progress.error-transfer-failed
  • call.in-progress.error-warm-transfer-max-duration
  • call.in-progress.error-warm-transfer-assistant-cancelled
  • call.in-progress.error-warm-transfer-silence-timeout
  • call.in-progress.error-warm-transfer-microphone-timeout

Transport & Connectivity Errors

General:

  • phone-call-provider-closed-websocket
  • phone-call-provider-bypass-enabled-but-no-call-received
  • call.in-progress.error-sulusfault-transport-never-connected
  • call.in-progress.error-providerfault-transport-never-connected
  • call.in-progress.error-sulusfault-transport-connected-but-call-not-active
  • call.in-progress.error-sulusfault-call-started-but-connection-to-transport-missing
  • call.in-progress.error-sulusfault-worker-not-available
  • call.in-progress.error-sulusfault-worker-died
  • call.in-progress.error-sulusfault-chat-pipeline-failed-to-start

Carrier-reported (provider-specific): depending on your phone number provider, you may also see additional carrier-reported codes in your call logs — for example, indicating the call failed to connect on the carrier's side, was reported as a misdialed number, or was marked completed/disconnected by the carrier. These follow a naming pattern specific to each carrier, so check the exact string in your call detail view rather than relying on a fixed list here.

SIP trunk connectivity:

  • call.in-progress.error-sip-inbound-call-failed-to-connect
  • call.in-progress.error-sip-outbound-call-failed-to-connect
  • call.in-progress.error-providerfault-outbound-sip-403-forbidden
  • call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required
  • call.in-progress.error-providerfault-outbound-sip-408-request-timeout
  • call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable
  • call.in-progress.error-providerfault-outbound-sip-503-service-unavailable
  • call.ringing.error-sip-inbound-call-failed-to-connect
  • call.ringing.sip-inbound-caller-hungup-before-call-connect
  • call.in-progress.sip-completed-call

Call Hooks & Other Reasons

Call hooks (a hook configured to run say or transfer actions ended the call as part of its own logic):

  • call.ringing.hook-executed-say
  • call.ringing.hook-executed-transfer
  • call.ending.hook-executed-say
  • call.ending.hook-executed-transfer
  • call.forwarding.operator-busy

Other reasons:

  • manually-canceled
  • voicemail
  • worker-shutdown
  • call-deleted

Fault Category Groupings

Most error codes fall into one of three fault categories, which tells you who's responsible and whether you're typically billed:

CategoryPatternMeaning
Core-system infrastructure faultcall.in-progress.error-sulusfault-*A platform infrastructure failure on Sulus's side. You are typically not charged for calls that end this way.
Provider faultcall.in-progress.error-providerfault-*A third-party provider (LLM, voice, transcriber, or carrier) returned a server error, outside the platform's direct control.
Legacy pipeline errorpipeline-error-*An older-format code. When you're using your own provider keys (BYOK), this usually indicates a credential or quota issue with your own provider account, not a platform fault.

In summary: this page is the complete endedReason lookup table. For faster, symptom-first troubleshooting, use Troubleshooting Call Errors & Error Code Reference, Call Timeouts & Duration, or Rate Limits & Error Codes instead of scanning this full list.