#Our agent does not end the call after silence of the user, even if instructed to do so via end_tool
1 messages · Page 1 of 1 (latest)
Short answer: don’t rely on the LLM to “decide” to call end_call after silence—enforce it at the platform level.
What to do
- Enable platform-enforced hang-up on silence: set conversation_config.turn.silence_end_call_timeout to the number of seconds you want (e.g., 10). This makes the platform terminate the call after that much user silence, regardless of the LLM’s behavior. You can see this field in the Agents API schema (example shows silence_end_call_timeout under conversation_config.turn). (elevenlabs.io)
- Keep (or add) the End Call system tool only if you also want the LLM to end calls based on content cues (goodbye, task complete). It’s not required for silence-based hang-up. (elevenlabs.io)
- If you prefer to enforce it from your side, you can use Real-time Monitoring to send a control command { "command_type": "end_call" } when your app detects no user_transcript events for 10s. Note: monitoring is enterprise-only, and VAD metrics aren’t streamed—base your timer on transcript events. (elevenlabs.io)
- Be aware that “Turn Timeout” only prompts the user after silence; it does not hang up. If you enable silence_end_call_timeout, pick values that reflect your desired behavior (e.g., turn timeout longer than the hang-up threshold, or disable prompting) so the agent doesn’t keep re-prompting instead of ending. (elevenlabs.io)
Why your current approach fails
- The End Call tool is LLM-triggered. “After 10 seconds of silence, call end_call” is not something the LLM can reliably observe; silence detection lives in the turn-taking layer, not the model. Using silence_end_call_timeout delegates this to the platform’s turn manager. (elevenlabs.io)
Sources:
Get agent | ElevenLabs Documentation
End call | ElevenLabs Documentation
Real-time monitoring | ElevenLabs Documentation
Conversation flow | ElevenLabs Documentation
End call | ElevenLabs Documentation
The agent does not end the call, although a silence_end_call_timeout is explicitly configured
Here’s how to make sure silence_end_call_timeout actually hangs up the call:
-
Confirm the setting exists on your agent: GET /v1/convai/agents/:agent_id and check conversation_config.turn.silence_end_call_timeout. If it’s not a positive number, set it to the number of seconds you want. This field is part of the Agents API response.
-
Set or update it explicitly: PATCH /v1/convai/agents/:agent_id with:
{
"conversation_config": {
"turn": { "silence_end_call_timeout": 10 }
}
}
Then GET again to verify the value persisted. -
Understand what this setting does: silence_end_call_timeout was added to “set maximum wait time before terminating a call.” Ensure you’re on a configuration that includes this (introduced April 7, 2025).
-
Don’t confuse “turn timeout” with end-of-call: turn_timeout only controls how long the agent waits in silence before prompting the user; it does not end the call. If you only configured turn_timeout, the agent will keep prompting instead of hanging up.
-
If you rely on LLM-driven hangups (e.g., ending after certain conditions), make sure the End Call system tool is enabled in your agent. That tool lets the model explicitly terminate the call. It’s added by default for dashboard-created agents; for API/SDK-created agents you must include it.
-
Historical note (only if you use the end_call tool): there was a bug fixed on November 5, 2025 where end_call didn’t always terminate conversations. If you saw this behavior earlier, retest now.
If after setting a positive silence_end_call_timeout and verifying via GET the call still doesn’t end, share the actual GET response for conversation_config.turn and we can check for misconfiguration or conflicting settings.
turn_timeout is also explitily set and less than silence_end_call_timeout, however agent does not take turn after given timeout and also does not end th call