Skip to main content
ElevenLabs Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

End call

End call

The End Call tool allows your conversational agent to terminate a call with the user. This is a system tool that provides flexibility in how and when calls are ended.

  • Default behavior: The tool can operate without any user-defined prompts, ending the call when the conversation naturally concludes.
  • Custom prompts: Users can specify conditions under which the call should end. For example:
    • End the call if the user says "goodbye."
    • Conclude the call when a specific task is completed.

Purpose: Automatically terminate conversations when appropriate conditions are met.

Trigger conditions: The LLM should call this tool when:

  • The main task has been completed and user is satisfied
  • The conversation reached natural conclusion with mutual agreement
  • The user explicitly indicates they want to end the conversation

Parameters:

  • reason (string, required): The reason for ending the call
  • message (string, optional): A farewell message to send to the user before ending the call

Function call format:

JSON
{
  "type": "function",
  "function": {
    "name": "end_call",
    "arguments": "{\"reason\": \"Task completed successfully\", \"message\": \"Thank you for using our service. Have a great day!\"}"
  }
}

Implementation: Configure as a system tool in your agent settings. The LLM will receive detailed instructions about when to call this function.

When creating an agent via API, you can add the End Call tool to your agent configuration. It should be defined as a system tool:

Python
from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs

elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")

response = elevenlabs.conversational_ai.agents.create(
    conversation_config=ConversationalConfig(
        agent=AgentConfig(
            prompt={
                "built_in_tools": {
                    "end_call": {
                        "type": "system",
                        "name": "end_call",
                        # Optional: customize when the tool should be triggered
                        "description": "",
                        "params": {"system_tool_type": "end_call"},
                    }
                }
            },
        ),
    ),
)
JavaScript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient({
  apiKey: "YOUR_API_KEY",
});

await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      prompt: {
        builtInTools: {
          endCall: {
            type: "system",
            name: "end_call",
            description: "", // Optional: Customize when the tool should be triggered
            params: { systemToolType: "end_call" },
          },
        },
      },
    },
  },
});
Bash
curl -X POST https://api.elevenlabs.io/v1/convai/agents/create \
     -H "xi-api-key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
  "conversation_config": {
    "agent": {
      "prompt": {
        "built_in_tools": {
          "end_call": {
            "type": "system",
            "name": "end_call",
            "description": "",
            "params": { "system_tool_type": "end_call" }
          }
        }
      }
    }
  }
}'

Example 1: Basic End Call

End the call when the user says goodbye, thank you, or indicates they have no more questions.

Example 2: End Call with Custom Prompt

End the call when the user says goodbye, thank you, or indicates they have no more questions. You can only end the call after all their questions have been answered. Please end the call only after confirming that the user doesn't need any additional assistance.
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu