Logo
Search
API Docs

Troubleshooting Call Errors & Error Code Reference

Troubleshooting & Errors

Troubleshooting Call Errors & Error Code Reference

Overview

When a call doesn't go the way you expected, the fastest way to diagnose it is the call's endedReason code. This page is a broad troubleshooting reference covering common symptoms, the full range of error categories you might see, and how to reduce non-fatal provider errors with fallback providers. If you specifically need rate-limit-related codes for LLM, voice, or transcriber providers, see Rate Limits & Error Codes — that page is narrower and focused only on rate-limit and quota scenarios; this page covers the broader set of call errors around it.


Symptom-to-Error-Code Lookup

Start from what you observed, then check the likely endedReason pattern:

SymptomRepresentative Error Code PatternLikely Cause
Phone never rangcall.start.error-* (e.g. error-subscription-frozen, assistant-not-found)Call failed before it ever reached the phone network — billing, account, or assistant configuration issue
Rang but no answercustomer-did-not-answerThe call connected to the carrier but the recipient didn't pick up
Dropped mid-conversationcall.in-progress.error-sulusfault-* or call.in-progress.error-providerfault-*An infrastructure or third-party provider failure during the call
Assistant went silent*-429-rate-limit-reached, *-out-of-credits, *-quota-exceededAn LLM or voice provider hit a rate limit or ran out of quota mid-call
Transfer failedcall.start.error-neither-assistant-nor-server-set, provider-fault codes during transferMisconfigured transfer destination, or the receiving line/provider errored
Call ended normallyassistant-ended-call, customer-ended-call, silence-timed-out, exceeded-max-durationExpected end of call — not an error

Understanding Error Prefixes

The prefix on an error code tells you who's responsible, and whether you're typically billed:

PrefixMeaning
call.in-progress.error-sulusfault-*Platform infrastructure failure — you are typically not charged for these calls
call.in-progress.error-providerfault-*A third-party provider (LLM, voice, or transcriber) returned a server error — outside the platform's control
pipeline-error-*Legacy format — when using your own provider keys (BYOK), this typically indicates a credential or quota issue with that provider

Common Error Categories

Account & billing errors (call fails before it starts):

  • call.start.error-subscription-frozen — payment failed, subscription is frozen
  • call.start.error-subscription-insufficient-credits — not enough credits to start the call
  • call.start.error-subscription-concurrency-limit-reached — too many simultaneous calls for your plan

Configuration errors:

  • assistant-not-found — the specified assistant ID doesn't exist
  • assistant-not-valid — the assistant configuration is invalid
  • call-start-error-neither-assistant-nor-server-set — no assistant or server URL configured for the call

LLM/model errors: typically surfaced as 401 (invalid credentials), 429 (rate limit or quota exceeded), or 500 (provider server error) patterns from the model provider.

Voice/TTS errors: *-quota-exceeded and *-out-of-credits patterns from the voice provider.

Transcriber/STT errors: provider-fault errors from the speech-to-text provider, usually resolved the same way as voice/LLM provider errors — via a fallback plan.

Transfer errors: a transfer can fail due to misconfiguration (no valid destination set) or a provider-fault error on the receiving leg of the call.

Normal call endings (not errors): assistant-ended-call, customer-ended-call, silence-timed-out, exceeded-max-duration.


Where to Find the endedReason

You can find the endedReason value in two places:

  • The dashboard, under Observe > Logs > Calls
  • The endedReason field on the Call object, available via the API

Reducing Non-Fatal Errors with Fallback Providers

Most provider-fault errors (rate limits, quota exhaustion, transient provider outages) don't have to end the call. Configure fallback providers for your transcriber, voice, and model, so a non-fatal provider error triggers an automatic provider swap instead of ending the call. This is the single highest-leverage fix for reducing "assistant went silent" and "dropped mid-conversation" symptoms in the table above.