Troubleshoot call errors

Learn to diagnose failed calls based on what the caller experienced.

Overview

When a call fails, the fastest path to a fix is identifying what the caller experienced. This guide organizes errors by symptom so you can jump to the right section and resolve the issue.

In this guide, you’ll learn to:

  • Match caller-reported symptoms to specific error codes
  • Understand the fault classification system (vapifault vs providerfault)
  • Take the right corrective action for each error category

This guide explains errors by symptom. For a complete reference of every endedReason code, see Call end reasons.

Start here: identify the symptom

Phone never rang

What the caller experiences: Nothing. The phone never rings. For web calls, the connection fails immediately.

What you see in the dashboard: The call object is created with status ended almost immediately. Duration is zero or near-zero. No transcript.

These are the most common cause of calls failing before they start.

Error codeMeaningFix
call.start.error-subscription-frozenPayment failed, subscription frozenUpdate payment method in dashboard
call.start.error-subscription-insufficient-creditsNot enough creditsAdd credits or enable auto-reload
call.start.error-subscription-concurrency-limit-reachedToo many simultaneous callsUpgrade plan or wait for active calls to end
call.start.error-fraud-check-failedBlocked by fraud detectionContact support
call.start.error-subscription-wallet-does-not-existNo billing wallet foundContact support

The call couldn’t start because something is missing or misconfigured.

Error codeMeaningFix
assistant-not-foundAssistant ID doesn’t existVerify the assistant ID in your dashboard
assistant-not-validAssistant configuration is invalidCheck required fields on the assistant
call-start-error-neither-assistant-nor-server-setNo assistant or server URL configuredSet an assistantId or serverUrl on the call
call.start.error-get-assistantError fetching the assistantVerify the assistant ID exists and your API key is correct
call.start.error-get-phone-numberError fetching the phone numberVerify the number is imported and active
call.start.error-get-resources-validationResources failed validationCheck assistant, tools, and provider configurations
call.start.error-vapi-number-internationalInternational calling not supportedUse a number that supports international calling
call.start.error-vapi-number-outbound-daily-limitDaily outbound limit reachedWait until the limit resets or use a different number

If you use a server URL to dynamically provide an assistant, these errors mean your server didn’t respond correctly.

Error codeMeaningFix
assistant-request-failedRequest to your server URL failedCheck your server is running and reachable
assistant-request-returned-errorServer returned an error responseCheck your server logs for the error
assistant-request-returned-invalid-assistantServer returned invalid assistant configValidate the response matches the assistant schema
assistant-request-returned-no-assistantServer returned an empty responseEnsure your server returns an assistant object
assistant-request-returned-unspeakable-errorServer returned a non-speakable errorReturn a user-friendly error message

These indicate a problem on Vapi’s side. You are typically not charged.

Error codeMeaningFix
call.in-progress.error-vapifault-transport-never-connectedTransport never connectedRetry. Contact support if persistent.
call.in-progress.error-vapifault-worker-not-availableNo call worker availableRetry. This is a transient capacity issue.
call.start.error-vapifault-database-errorInternal database errorRetry. Contact support if persistent.
call.start.error-get-orgError fetching organizationVerify your API key is correct

Phone rang but nobody answered

What the caller experiences: The phone rings but nobody picks up, or they hear a busy signal.

What you see in the dashboard: Short duration, no transcript, no messages.

Error codeMeaningWhat to do
customer-did-not-answerCallee didn’t pick up (outbound)Normal behavior. For IVR use cases, check your voicemail detection settings.
customer-busyLine was busy (outbound)Normal behavior. Retry later.
customer-did-not-give-microphone-permissionUser denied mic access (web calls)Ensure your UI requests microphone permissions before starting the call.
call.ringing.sip-inbound-caller-hungup-before-call-connectSIP caller hung up during ringingNormal behavior — caller abandoned before pickup.

For outbound calls where you expect to reach an IVR or automated system, configure your voicemail detection settings to prevent the call from ending prematurely.

Call dropped mid-conversation

What the caller experiences: They’re in the middle of a conversation and the call suddenly cuts off with no warning. The assistant stops speaking and the line goes dead.

What you see in the dashboard: Partial transcript, messages array that ends abruptly, non-zero duration.

These are on Vapi’s side. You are typically not charged. Most are transient.

Error codeMeaning
call.in-progress.error-vapifault-worker-diedThe Vapi process handling the call crashed
call.in-progress.error-vapifault-transport-connected-but-call-not-activeTransport connected but call was no longer active
call.in-progress.error-vapifault-call-started-but-connection-to-transport-missingTransport connection was lost after call started
worker-shutdownA Vapi deployment occurred while the call was active

What to do: These are transient issues. If worker-died errors are frequent, contact support with the affected call_id values.

The telephony provider (Twilio, Vonage, or your SIP trunk) dropped the connection.

Error codeMeaning
phone-call-provider-closed-websocketAudio WebSocket between Vapi and the provider broke
call.in-progress.error-providerfault-transport-never-connectedProvider failed to maintain the connection
call.in-progress.twilio-completed-callTwilio ended the call from their side
call.in-progress.sip-completed-callSIP provider ended the call from their side
vonage-disconnectedVonage disconnected the call

What to do: Check your telephony provider’s dashboard for connection logs. For SIP trunks, verify your network connectivity to Vapi’s SBC.

Assistant went silent or unresponsive

What the caller experiences: The call is connected and the line is open, but the assistant either doesn’t speak, speaks with extreme delay, responds once then stops, or produces garbled audio. The call eventually times out or the caller hangs up in frustration.

What you see in the dashboard: Partial messages, the endedReason points to a specific pipeline component failure.

If you’ve configured fallback providers, some transcriber and voice errors will trigger a provider swap instead of ending the call. The caller might hear a brief 1-2 second pause while the fallback initializes, then the conversation continues normally.

The AI model that generates responses is unreachable or returning errors.

Status code patternMeaningFix
*-401-* / *-incorrect-api-keyInvalid API keyVerify your API key for this provider
*-403-* / *-model-access-deniedModel access deniedCheck model permissions in your provider account
*-429-* / *-exceeded-quotaRate limit or quota hitUpgrade your plan with the provider or reduce volume
*-500-* / *-server-errorProvider internal errorRetry. Check the provider’s status page
*-503-* / *-server-overloadedProvider overloadedRetry after a brief wait
*-llm-failedGeneric LLM failureCheck call logs for the detailed error message
pipeline-no-available-llm-modelNo LLM model availableCheck your model configuration

The text-to-speech service can’t produce audio. The assistant “thinks” but can’t speak.

PatternMeaningFix
*-voice-failedGeneric synthesis failureCheck call logs. May be a transient provider issue.
*-voice-not-found / *-invalid-voiceVoice ID doesn’t existVerify the voice ID in your provider account
*-quota-exceeded / *-out-of-creditsVoice provider credits exhaustedAdd credits to your voice provider account
*-unauthorized-access / *-invalid-api-keyBad voice provider credentialsVerify your API key for this provider
*-500-* / *-503-*Provider infrastructure issueRetry. Check the provider’s status page.

The speech-to-text service can’t hear the caller. The assistant can speak but can’t understand input.

PatternMeaningFix
*-transcriber-failedGeneric transcriber failureCheck call logs for details
*-returning-400-*Bad request (invalid model/language)Check your transcriber model and language configuration
*-returning-401-*Invalid transcriber credentialsVerify your API key for this provider
*-returning-403-*Model access deniedCheck model permissions in your provider account
*-returning-500-* / *-returning-502-*Provider server errorRetry. Check the provider’s status page.

To prevent provider outages from killing your calls, configure fallback providers for your transcriber, voice, and model. Non-fatal errors will trigger a provider swap instead of ending the call.

Transfer failed

What the caller experiences: The assistant says it’s transferring the call, but the transfer doesn’t go through. The caller may hear silence, get disconnected, or return to the original assistant (for warm transfers).

What you see in the dashboard: Transcript shows the transfer attempt, followed by the error.

Error codeMeaningFix
call.in-progress.error-transfer-failedTransfer attempt failedVerify the destination number is correct and reachable
call.in-progress.error-warm-transfer-max-durationWarm transfer exceeded max durationIncrease the warm transfer timeout or check if the destination is answering
call.in-progress.error-warm-transfer-assistant-cancelledTransfer assistant cancelledCheck the transfer assistant’s configuration
call.in-progress.error-warm-transfer-silence-timeoutSilence during warm transferVerify the transfer destination is responding with audio
call.in-progress.error-warm-transfer-microphone-timeoutMic timeout during warm transferCheck audio connectivity to the transfer destination
Error codeMeaningFix
*-outbound-sip-403-forbiddenSIP provider rejected the callCheck your SIP trunk credentials and allowed destinations
*-outbound-sip-407-proxy-authentication-requiredSIP auth requiredConfigure proxy authentication on your SIP trunk
*-outbound-sip-408-request-timeoutSIP request timed outCheck network connectivity to the SIP destination
*-outbound-sip-480-temporarily-unavailableSIP destination unavailableVerify the destination is online and accepting calls
*-outbound-sip-503-service-unavailableSIP service unavailableCheck the SIP provider’s service status
Error codeMeaningFix
twilio-failed-to-connect-callTwilio couldn’t connect the transferCheck the destination number format and Twilio geo permissions
vonage-failed-to-connect-callVonage couldn’t connect the transferCheck the destination number and Vonage configuration
vonage-rejectedVonage rejected the transferCheck Vonage configuration and allowed destinations

For a detailed transfer debugging walkthrough, see Debug forwarding drops.

Call ended normally

These are not errors — they indicate the call ended as expected.

Error codeMeaningAdjust if needed
assistant-ended-callAssistant ended the call via a tool or functionExpected behavior
assistant-ended-call-after-message-spokenAssistant spoke its final message and endedExpected behavior
assistant-ended-call-with-hangup-taskAssistant used a hangup workflow nodeExpected behavior
assistant-said-end-call-phraseAssistant said a configured end-call phraseCheck your end-call phrases if calls end too early
assistant-forwarded-callAssistant transferred the callExpected behavior
customer-ended-callCustomer hung upExpected behavior
exceeded-max-durationHit maxDurationSecondsIncrease maxDurationSeconds if calls are being cut short
silence-timed-outSilence timeoutIncrease silenceTimeoutSeconds if the timeout is too aggressive
voicemailCall went to voicemailConfigure voicemail detection settings
manually-canceledCanceled via API or dashboardExpected behavior
vonage-completedVonage reported call completedExpected behavior

Next steps