Subagents
A subagent is a second persona on the same agent: its own prompt, voice, model, tools and knowledge, taking over part of a call and handing back when it is done. One agent can hold a small flow of them -- a receptionist that routes to billing, a sales specialist, a Spanish-speaking persona -- without the caller noticing anything beyond a change of voice.
The agent bound to the phone number stays the main agent for the whole call. It keeps the call log, the recording, the transcript, the webhook and the billing. A subagent only changes how the assistant sounds and reasons while it is active.
Subagents are available on agents running the standard speech-to-text -> language model -> text-to-speech pipeline. An agent using a speech-to-speech provider does not show the section at all: a live session fixes its instructions, voice and tools the moment it connects, so there is nothing to hand over to. Existing subagents are kept if you switch an agent to speech-to-speech and back.
Where to find it
Open Agents, click the agent, and scroll to Subagents & Transitions. Save the agent once before configuring subagents -- the section appears on an agent that already exists, not on the creation form.
The section shows the whole flow in one place:
- Nodes -- the main agent first, then each subagent. Each row shows which voice provider that node speaks with and which settings it overrides.
- Transitions -- every move between two nodes, what triggers it, and how many times it has fired.
What a subagent can change
Everything in a subagent's editor is optional. Leave a field on its inherited value and the subagent behaves exactly as the main agent does for that setting, so a subagent that only changes the prompt keeps the main agent's voice, model and tools.
A subagent can override:
- System prompt -- how it behaves while it is answering.
- Language model and voice provider, plus the voice itself.
- Opening line -- spoken the first time the caller reaches this subagent in a call, and never repeated if the caller comes back to it.
- Interruptibility, barge-in sensitivity and the thinking cue.
- Transfer to a human, with its own destinations.
- Which of the agent's integrations, custom endpoints and knowledge base entries it may use. "Inherit all" gives it everything the main agent has; turn it off to pick a subset.
- An on-entry check -- see below.
What stays locked to the main agent
These belong to the call as a whole and cannot be overridden. The editor lists them under a lock so it is clear where they come from:
phone numbers, speech-to-text, call language, response trigger speed, call and silence limits, answering machine detection, call recording, automatic analysis, the webhook, and the declared custom variables.
There is no field for any of them on a subagent, so no configuration can accidentally change one mid-call.
Adding a subagent
- Click Add subagent.
- Give it a name. The name is what the AI uses when handing over, so make it descriptive -- "Billing", "Spanish", "Bookings". It must differ from the main agent's name and from every other subagent on that agent.
- Override whatever should differ, and leave the rest inherited.
- Click Save.
An agent can hold up to 20 subagents.
Transitions
A transition is a one-way move from one node to another. Both ends must belong to the same agent, and a transition can point back at the main agent or at a node the call has already visited, so a caller can move between personas more than once.
Click Add transition, pick a From and a To node, then choose what fires it:
| Trigger | Fires when |
|---|---|
| Variable matches | A call variable equals the value you give. Checked before the AI is asked anything, so it is exact and predictable. |
| On-entry check result | The result of the source node's on-entry check matches -- by status code or response body. |
| Model judgement | The AI decides, from the conversation so far, that your plain-English condition is met. |
Write a model-judgement condition the way it would appear in the transcript, exactly as you would write a human-transfer condition: "The caller asks about an invoice, a payment or their bill."
Deterministic triggers are checked first; model judgement is the fallback when none of them fires. Each node can have up to 20 transitions leaving it, and a single call may take at most 10 transitions in total -- after that the call simply carries on with whichever node is active, it never ends.
On-entry checks
An on-entry check is one of the agent's custom endpoints, called automatically the instant a subagent becomes active, before the caller says anything. Its result can fire a transition on its own, which is how a flow routes on a fact -- "this customer has an overdue invoice" -- rather than on what the caller happens to mention.
Choose the endpoint in the subagent's editor and add any arguments it needs. A transition using On-entry check result requires its source node to have one configured.
The cross-vendor voice warning
If two nodes connected by a transition use different voice providers, the transition row shows a warning. The handoff still works, but the new voice has to connect before it can speak, so the caller may hear a brief pause at that point. Two nodes on the same voice provider hand over with no perceptible gap. Keeping a flow on one voice provider is the simplest way to avoid it.
Fire counts
Each transition shows how many times it has ever fired, or Never fired. It is the quickest way to spot a condition the AI never judges true, or a variable that never takes the value you expected.
Shared agents
Access to an agent's subagents follows the sharing already set on the agent itself. Someone the agent is shared with for reading sees the whole flow but no edit controls, and the section is labelled Read only. A write share can change everything.
Reviewing a call
Open a call in Calls and the detail view shows which nodes handled it:
- Nodes on this call lists them in order, with the time each was entered and what triggered the move. If a subagent could not be entered -- it was deleted after the call started, say -- the entry is marked as a fall back to the main agent, and the call carried on rather than ending.
- Each transcript turn is labelled with the node that produced it, so it is clear which persona said what.
Both appear only on calls that actually used subagents. Everything else about the call is unchanged: one log, one recording, one transcript, one webhook.
API
Everything on this page is available over the API -- see Subagents in the API reference.