Call ended reasons
Every call in Vapi ends with an endedReason code that tells you exactly why it ended. You can find this value in the “Ended Reason” column of your call logs, or under the endedReason field on the Call object.
For the full list of possible endedReason values, see the API reference.
Quick diagnosis
Start here if a call failed and you want to quickly understand what happened:
For a detailed symptom-based walkthrough, see Troubleshoot call errors.
Understanding error prefixes
Many error codes include a prefix that indicates who is responsible for the failure:
Call start errors
These occur before the call connects, during resource setup.
Account and billing
call.start.error-subscription-frozen— Your subscription is frozen due to a failed payment. Update your payment method in the dashboard.call.start.error-subscription-insufficient-credits— Not enough credits to start the call. Add credits or enable auto-reload.call.start.error-subscription-wallet-does-not-exist— No billing wallet found for the subscription. Contact support.call.start.error-subscription-upgrade-failed— An automatic subscription upgrade attempt failed.call.start.error-subscription-concurrency-limit-reached— You’ve hit the maximum number of simultaneous calls for your plan. Upgrade your plan or wait for an active call to end.call.start.error-fraud-check-failed— The call was blocked by Vapi’s fraud detection system.call.start.error-enterprise-feature-not-available-recording-consent— Recording consent requires an enterprise plan.
Resource resolution
call-start-error-neither-assistant-nor-server-set— Neither an assistant nor a server URL was configured for the call.call.start.error-get-org— Error retrieving your organization during call start. Verify your API key.call.start.error-get-subscription— Error retrieving subscription information during call start.call.start.error-get-assistant— Error retrieving the assistant. Verify the assistant ID exists.call.start.error-get-phone-number— Error retrieving the phone number. Verify the number is imported and active.call.start.error-get-customer— Error retrieving customer information.call.start.error-get-resources-validation— The assistant, tools, or other resources failed validation.call.start.error-get-transport— Error setting up the call transport (Twilio, Vonage, etc.).call.start.error-vapifault-database-error— Internal database error during call setup. Retry or contact support.
Phone number limits
call.start.error-vapi-number-international— International calling is not supported on this Vapi number.call.start.error-vapi-number-outbound-daily-limit— The daily outbound call limit for this Vapi number has been reached.
Assistant resolution (via server URL)
assistant-not-found— The specified assistant ID does not exist.assistant-not-valid— The assistant configuration is invalid.assistant-request-failed— The request to your server URL to fetch an assistant failed.assistant-request-returned-error— Your server URL returned an error response.assistant-request-returned-unspeakable-error— Your server URL returned an error that cannot be spoken to the user.assistant-request-returned-invalid-assistant— Your server URL returned a response that is not a valid assistant configuration.assistant-request-returned-no-assistant— Your server URL returned an empty response with no assistant.assistant-request-returned-forwarding-phone-number— Your server URL returned a phone number for forwarding instead of an assistant.scheduled-call-deleted— A scheduled call was deleted before it could execute.
Assistant actions
These indicate the assistant intentionally ended the call — not errors.
assistant-ended-call— The assistant ended the call (via an end-call tool or function).assistant-ended-call-after-message-spoken— The assistant ended the call after speaking its final message.assistant-ended-call-with-hangup-task— The assistant ended the call using a hangup workflow node.assistant-said-end-call-phrase— The assistant said a phrase configured to trigger call termination.assistant-forwarded-call— The assistant transferred the call to another number or service.assistant-join-timed-out— The assistant failed to join the call within the expected timeframe.
Customer actions
customer-ended-call— The customer hung up.customer-busy— The customer’s line was busy (outbound calls).customer-did-not-answer— The customer did not answer (outbound calls).customer-did-not-give-microphone-permission— The user denied microphone access (web calls).call.in-progress.error-assistant-did-not-receive-customer-audio— No audio was received from the customer. This can indicate a network issue, mic problem, or the customer disconnected silently.customer-ended-call-before-warm-transfer— The customer hung up before a warm transfer completed.customer-ended-call-after-warm-transfer-attempt— The customer hung up after a warm transfer was attempted.customer-ended-call-during-transfer— The customer hung up during a transfer.
Timeouts
exceeded-max-duration— The call reachedmaxDurationSecondsand was automatically terminated.silence-timed-out— No speech was detected for the configured silence timeout duration.
Pipeline errors: LLM
Each LLM provider has error codes that follow a consistent pattern. The status code in the error name tells you what went wrong:
Supported providers: OpenAI, Azure OpenAI, Anthropic, Anthropic Bedrock, Anthropic Vertex, Google, Groq, xAI, Mistral, Together AI, Perplexity AI, DeepInfra, DeepSeek, Cerebras, Inflection AI, Anyscale, OpenRouter, Runpod, Baseten, Custom LLM.
Additional model errors:
pipeline-no-available-llm-model/call.in-progress.error-pipeline-no-available-llm-model— No suitable LLM model was available. Check your model configuration.call.in-progress.error-pipeline-ws-model-connection-failed— Failed to connect to a custom LLM WebSocket endpoint.
Pipeline errors: voice (TTS)
Each voice provider has specific error codes. Common patterns:
*-voice-failed— Generic voice synthesis failure for that provider.*-voice-not-found/*-invalid-voice— The configured voice ID does not exist or is invalid.*-quota-exceeded/*-out-of-credits— Voice provider credits exhausted.*-unauthorized-access/*-invalid-api-key— Voice provider credential issue.*-socket-hang-up/*-500-server-error/*-503-server-error— Voice provider infrastructure issue.
Supported providers: ElevenLabs, Cartesia, Deepgram, PlayHT, Azure, OpenAI, Rime AI, Smallest AI, Neuphonic, Hume, Sesame, Inworld, Minimax, WellSaid, Custom Voice.
Pipeline errors: transcriber (STT)
Common transcriber error patterns:
*-transcriber-failed— Generic transcriber failure.*-returning-400-*— Bad request (invalid model/language combination, invalid config, etc.).*-returning-401-*— Invalid transcriber credentials.*-returning-403-*— Model access denied on the transcriber.*-returning-500-*/*-returning-502-*— Transcriber provider server error.
Supported providers: Deepgram, AssemblyAI, Gladia, Speechmatics, Talkscriber, Azure Speech, Google, OpenAI, Soniox, ElevenLabs, Custom Transcriber.
Transfer errors
call.in-progress.error-transfer-failed— A call transfer attempt failed.call.in-progress.error-warm-transfer-max-duration— The warm transfer exceeded its maximum duration.call.in-progress.error-warm-transfer-assistant-cancelled— The transfer assistant cancelled the warm transfer.call.in-progress.error-warm-transfer-silence-timeout— Silence timeout during a warm transfer.call.in-progress.error-warm-transfer-microphone-timeout— Microphone timeout during a warm transfer.
For step-by-step transfer debugging, see Debug forwarding drops.
Transport and connectivity
phone-call-provider-closed-websocket— The call provider’s WebSocket connection closed unexpectedly. The caller experiences an abrupt call drop.phone-call-provider-bypass-enabled-but-no-call-received— Phone call provider bypass was enabled but no call arrived.call.in-progress.error-vapifault-transport-never-connected— The transport never connected. Vapi infrastructure issue.call.in-progress.error-providerfault-transport-never-connected— The transport provider failed to connect. Provider-side issue.call.in-progress.error-vapifault-transport-connected-but-call-not-active— Transport connected but the call was no longer active.call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing— Call started but the transport connection was lost.call.in-progress.error-vapifault-worker-not-available— No call worker was available to process the call.call.in-progress.error-vapifault-worker-died— The call worker process crashed during the call.call.in-progress.error-vapifault-chat-pipeline-failed-to-start— The chat pipeline failed to initialize.
Twilio
twilio-failed-to-connect-call— Twilio failed to establish the call.twilio-reported-customer-misdialed— Twilio reported the customer dialed an invalid number.call.in-progress.twilio-completed-call— Twilio reported the call as completed on their side.
Vonage
vonage-disconnected— Call disconnected by Vonage.vonage-failed-to-connect-call— Vonage failed to connect the call.vonage-rejected— Call rejected by Vonage.vonage-completed— Call completed by Vonage.
SIP
call.in-progress.error-sip-inbound-call-failed-to-connect— Inbound SIP call failed to connect.call.in-progress.error-sip-outbound-call-failed-to-connect— Outbound SIP call failed to connect.call.in-progress.error-providerfault-outbound-sip-403-forbidden— SIP 403: call forbidden by the SIP provider.call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required— SIP 407: proxy authentication required.call.in-progress.error-providerfault-outbound-sip-408-request-timeout— SIP 408: request timed out.call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable— SIP 480: destination temporarily unavailable.call.in-progress.error-providerfault-outbound-sip-503-service-unavailable— SIP 503: service unavailable.call.ringing.error-sip-inbound-call-failed-to-connect— SIP inbound call failed during ringing.call.ringing.sip-inbound-caller-hungup-before-call-connect— SIP caller hung up before the call connected.call.in-progress.sip-completed-call— SIP provider reported the call as completed.
For SIP trunk setup issues, see Troubleshoot SIP trunk credential errors.
Call hooks
call.ringing.hook-executed-say— A say hook executed during ringing ended the call.call.ringing.hook-executed-transfer— A transfer hook executed during ringing ended the call.call.ending.hook-executed-say— A say hook executed during the ending phase.call.ending.hook-executed-transfer— A transfer hook executed during the ending phase.call.forwarding.operator-busy— The operator was busy during call forwarding.
Other reasons
manually-canceled— The call was manually canceled via the API or dashboard.voicemail— The call was diverted to or detected as voicemail.worker-shutdown— The call worker was shut down (e.g., during a deployment). The call should be retried automatically.call-deleted— The call record was deleted.
Next steps
- Troubleshoot call errors: Step-by-step diagnosis guide organized by what the caller experienced.
- Debugging voice agents: General debugging workflow using dashboard tools, logs, and test suites.
- How to report issues: Include your
call_idand account email when contacting support.