Agent-to-agent transfer allows an ElevenLabs agent to hand off the ongoing conversation to another designated agent when specific conditions are met. This enables multi-layered conversational workflows where different agents handle specific tasks or levels of complexity.
For example, an initial agent (Orchestrator) could handle general inquiries and then transfer the call to a specialized agent based on the conversation’s context. Transfers can also be nested:
Purpose: Transfer conversations between specialized AI agents based on user needs.
Trigger conditions: The LLM should call this tool when:
Parameters:
reason (string, optional): The reason for the agent transferagent_number (integer, required): Zero-indexed number of the agent to transfer to (based on configured transfer rules)Function call format:
Implementation: Define transfer rules mapping conditions to specific agent IDs. Configure which agents the current agent can transfer to. Agents are referenced by zero-indexed numbers in the transfer configuration.
Agent transfer is configured using the transfer_to_agent system tool.
Enable agent transfer by selecting the transfer_to_agent system tool in your agent’s configuration within the Agent tab. Choose “Transfer to AI Agent” when adding a tool.

You can provide a custom description to guide the LLM on when to trigger a transfer. If left blank, a default description encompassing the defined transfer rules will be used.

Configure the specific rules for transferring to other agents. For each rule, specify:
The LLM will use these conditions, along with the tool description, to decide when and to which agent (by number) to transfer.

Ensure that the user account creating the agent has at least viewer permissions for any target agents specified in the transfer rules.
When a transfer occurs, the parent agent (the one initiating the transfer) passes certain configuration values to the child agent (the one receiving the conversation), while others reset entirely.
The parent agent overwrites the following values on every child agent, regardless of the child’s own configuration:
Additionally, the parent agent’s current language is carried over — if the child agent does not support it, it falls back to its own default. Post-call webhook and analysis configuration (including evaluation criteria and data collection items) also apply to the entire conversation.
All other configurations are set by the child agent, included but not limited to:
agent_output_audio_format)user_input_audio_format)Configure these settings consistently on each agent in the workflow to avoid mismatched behavior.
The full transcript is preserved across the entire conversation. User and agent messages from every preceding agent remain in the chat history.
During a transfer, transfer_to_agent tool calls are stripped from the history visible to the child agent’s LLM, so it continues the conversation without mentioning the handoff.
The post-call evaluator LLM receives the full, unfiltered transcript — all user and agent messages, and all tool calls including the transfer.
Individual messages do not carry an agent_id field. To determine which agent produced which messages, the evaluator uses the transfer_to_agent tool call as a boundary marker in the transcript.
You can configure the transfer_to_agent system tool when creating or updating an agent via the API.