Configure handoff destinations
Every handoff needs a destination. You can name a single assistant, offer the model several to choose from, resolve one at runtime from your own server, or hand the call to an entire squad.
Basic configuration
Single destination handoff
Using assistant ID
Using assistant name (for squad members)
Each assistant destination also supports assistantOverrides to override settings on the destination assistant, and an inline assistant property to create a transient assistant without saving it first. See the API reference for all available properties.
Multiple destinations
Multiple tools pattern (OpenAI recommended)
Best for OpenAI models — creates separate tool definitions for each destination:
Single tool pattern (Anthropic recommended)
Best for Anthropic models — single tool with multiple destination options:
Dynamic handoffs
Basic dynamic handoff
The destination is determined at runtime via the handoff-destination-request webhook:
Your server must respond with a single destination. You can return an assistantId, assistantName (if using squads), or a transient assistant. For example:
If the handoff should not execute, either respond with an empty destination, or provide a custom error. The custom error is added to the message history.
Dynamic handoff with custom parameters
Pass additional context to your webhook for intelligent routing:
Squad destinations
In addition to assistant and dynamic destinations, you can hand off a call to an entire squad. This transfers the caller into a new multi-agent system where the squad’s own routing logic takes over.
Using squad ID
Reference a saved squad by its ID:
Using a transient squad
Define the squad inline without saving it first:
Squad destination properties
For the full schema, see the API reference.
Custom function definitions
Override the default function definition for more control. You can overwrite the function name for each tool to reference in the system prompt, or pass custom parameters in a dynamic handoff request.