You can check the reason why a call is disconnected through the Retell Dashboard or by using the get-call API endpoint.

Understanding Disconnection Reasons

Please note that when phone numbers enagage in a lot of short calls in a short period, it might be marked as spam at carrier level, which in turn leads to number being blocked and show up as dial_failed.
Disconnection ReasonDescription
user_hangupExpected behavior, user hangup the call.
agent_hangupExpected behavior, AI agent hangup the call.
call_transferExpected behavior, AI agent transferred the call.
voicemail_reachedExpected behavior, if AI agent configured voicemail settings, and reached voicemail.
inactivityExpected behavior, call was terminated due to the “end_call_after_silence_ms” setting reached after long inactivity.
machine_detectedExpected behavior, call was terminated due to the “drop_call_if_machine_detected” setting triggering when an voicemail or similar is detected.
max_duration_reachedExpected behavior, call was terminated due to maximum duration reached.
concurrency_limit_reachedError, concurrency limit reached, add a retry with exponential backoff. Or consider enterprise plan.
no_valid_paymentError, no valid payment registered on file, or service shut down due to bill overdue.
scam_detectedError, scam detected for that particular agent.
error_inbound_webhookError, failed to retrieve dynamic variables for inbound phone call.
dial_busyThe number dialed in busy.
dial_failedDailing failed, might be due to callee number is non existent, or the agent number is marked as spam and got blocked.
dial_no_answerThe number dialed did not answer.
error_llm_websocket_openError, LLM websocket did not open between Retell server and your backend. Likely because the Custom LLM URL is incorrect or your LLM server is not reachable.
error_llm_websocket_lost_connectionError, LLM websocket connection broke during the call.
error_llm_websocket_runtimeError, LLM websocket received a closing signal other than 1000 from your server.
error_llm_websocket_corrupt_payloadError, LLM websocket received unspecified payload.
error_frontend_corrupted_payloadError, frontend audio websocket received unspecified payload.
error_twilioError, Twilio websocket connection between Retell server encountered an error.
error_no_audio_receivedError, has not received audio from Twilio or web frontend for a while after connection has established.
error_asrError, Retell’s ASR encountered a problem.
error_retellError, unspecified Retell side problem.
error_unknownError, unknown error.
error_user_not_joinedError, user did not join web call within 30s after calling startWebCall.
registered_call_timeoutError, phone call is 30s or more apart from registering.

Understand Reasons for Outbound Call Failure

When an outbound call is made and a dial_failed, dial_no_answer reason is returned, it means that the call is not successful. There can be a few reasons for this:

  • The number dialed is not existent
  • The number you use to dial is marked as spam and got blocked
  • Error met in telephony provider (for example, max call per second limit reached)
  • The number dialed did not answer

It’s however beyond our scope and control to have more information about why it did not connect. If further information is needed, please check with your telephony provider if applicable.