WorkflowsMay 7, 2026·5 min read

Vapi Squads — Multi-Agent Voice Routing in One Call

Vapi Squads route calls between multiple voice agents in one call. Greeter routes to specialist, hands back to closer. Replaces mega-prompt assistants.

Agent ready

Safe staging for this asset

This asset is staged first. The copied prompt tells the agent to inspect the staged files and ask before activating scripts, MCP config, or global config.

Stage only · 29/100Policy: stage
Agent surface
Any MCP/CLI agent
Kind
Skill
Install
Stage only
Trust
Trust: Community
Entrypoint
Asset
Safe staging command
npx -y tokrepo@latest install 8201bf24-1bcd-489c-a3f0-27d71891a318 --target codex

Stages files first; activation requires review of the staged README and plan.

Intro

Vapi Squads connect multiple voice agents into a single coordinated stack — caller starts with a Greeter, who hands off mid-call to a Specialist, who routes back to a Closer. Each agent has its own system prompt, tools, and voice. Best for: voice products where a single mega-prompt becomes brittle (e.g. medical intake → triage → scheduling). Works with: Vapi platform; Squads can include Workflows or free-form assistants. Setup time: 5 minutes (define agents → wire transfers).


Why split into a squad

A single prompt that says "Be a hotel concierge AND handle bookings AND transfer to maintenance AND…" produces an agent that's mediocre at everything. Squads let you write three small focused prompts:

  • Greeter (warm, redirects fast)
  • BookingSpecialist (knows pricing, calendar, upgrades)
  • MaintenanceTriage (categorizes issues, transfers to humans)

Each has its own toolset and voice. The squad routes between them based on intent.

Define a squad

curl -X POST https://api.vapi.ai/squad \
  -H "Authorization: Bearer $VAPI_API_KEY" \
  -d '{
    "name": "Acme Concierge Squad",
    "members": [
      {
        "assistantId": "greeter-id",
        "assistantDestinations": [
          { "type": "assistant", "assistantName": "BookingSpecialist", "message": "Let me transfer you to our booking specialist." },
          { "type": "assistant", "assistantName": "MaintenanceTriage", "message": "Connecting you to maintenance." }
        ]
      },
      {
        "assistantId": "booking-specialist-id",
        "assistantDestinations": [
          { "type": "assistant", "assistantName": "Greeter", "message": "Anything else I can help with?" }
        ]
      },
      {
        "assistantId": "maintenance-triage-id",
        "assistantDestinations": [
          { "type": "assistant", "assistantName": "Greeter" }
        ]
      }
    ]
  }'

How transfers happen

Inside the Greeter's system prompt, you give the LLM tool access to a transferCall function with destinations declared in the squad. When the LLM detects intent, it calls the function and Vapi swaps in the next assistant — keeping the audio session alive, no re-dial.

Greeter: "Hi, Acme Hotels. How can I help?"
User:    "I'd like to book a room for next weekend."
Greeter: [calls transferCall(destination: "BookingSpecialist")]
         "Let me transfer you to our booking specialist."
[BookingSpecialist takes over with full conversation context]
BookingSpecialist: "Hi! I see you're looking to book for next weekend. What city?"

The user perceives one continuous call.

Squad vs single assistant with tools

Squad Single + Tools
Each agent has independent voice / language / model One voice for everything
Easy to A/B test specialists individually Have to A/B the whole stack
Smaller, focused prompts One mega-prompt
Best for >2-3 distinct personas Fine for 1-2

FAQ

Q: Does the next assistant get the conversation history? A: Yes — Squad transfers preserve the full conversation context so the receiving agent doesn't ask the same questions twice. You can also pass an explicit transferContext if you want to summarize state in custom format.

Q: Can a Squad include a Workflow? A: Yes — a Squad member can be either a free-form assistant OR a Workflow. Useful pattern: Greeter is free-form (handles small talk), BookingSpecialist is a Workflow (script-driven booking flow).

Q: How is this different from Workflow's transfer node? A: Workflow's transfer is one-way (pass the call to a human or another assistant and don't come back). Squad transfers are bidirectional — the BookingSpecialist can hand back to Greeter when the booking is done. Squads are state-aware; Workflow transfers are exits.


Quick Use

  1. Have at least 2 Vapi assistants created (greeter + specialist)
  2. POST a squad definition to /squad with assistantDestinations between members
  3. Start a call with squadId in the call request — Vapi handles transfers automatically

Intro

Vapi Squads connect multiple voice agents into a single coordinated stack — caller starts with a Greeter, who hands off mid-call to a Specialist, who routes back to a Closer. Each agent has its own system prompt, tools, and voice. Best for: voice products where a single mega-prompt becomes brittle (e.g. medical intake → triage → scheduling). Works with: Vapi platform; Squads can include Workflows or free-form assistants. Setup time: 5 minutes (define agents → wire transfers).


Why split into a squad

A single prompt that says "Be a hotel concierge AND handle bookings AND transfer to maintenance AND…" produces an agent that's mediocre at everything. Squads let you write three small focused prompts:

  • Greeter (warm, redirects fast)
  • BookingSpecialist (knows pricing, calendar, upgrades)
  • MaintenanceTriage (categorizes issues, transfers to humans)

Each has its own toolset and voice. The squad routes between them based on intent.

Define a squad

curl -X POST https://api.vapi.ai/squad \
  -H "Authorization: Bearer $VAPI_API_KEY" \
  -d '{
    "name": "Acme Concierge Squad",
    "members": [
      {
        "assistantId": "greeter-id",
        "assistantDestinations": [
          { "type": "assistant", "assistantName": "BookingSpecialist", "message": "Let me transfer you to our booking specialist." },
          { "type": "assistant", "assistantName": "MaintenanceTriage", "message": "Connecting you to maintenance." }
        ]
      },
      {
        "assistantId": "booking-specialist-id",
        "assistantDestinations": [
          { "type": "assistant", "assistantName": "Greeter", "message": "Anything else I can help with?" }
        ]
      },
      {
        "assistantId": "maintenance-triage-id",
        "assistantDestinations": [
          { "type": "assistant", "assistantName": "Greeter" }
        ]
      }
    ]
  }'

How transfers happen

Inside the Greeter's system prompt, you give the LLM tool access to a transferCall function with destinations declared in the squad. When the LLM detects intent, it calls the function and Vapi swaps in the next assistant — keeping the audio session alive, no re-dial.

Greeter: "Hi, Acme Hotels. How can I help?"
User:    "I'd like to book a room for next weekend."
Greeter: [calls transferCall(destination: "BookingSpecialist")]
         "Let me transfer you to our booking specialist."
[BookingSpecialist takes over with full conversation context]
BookingSpecialist: "Hi! I see you're looking to book for next weekend. What city?"

The user perceives one continuous call.

Squad vs single assistant with tools

Squad Single + Tools
Each agent has independent voice / language / model One voice for everything
Easy to A/B test specialists individually Have to A/B the whole stack
Smaller, focused prompts One mega-prompt
Best for >2-3 distinct personas Fine for 1-2

FAQ

Q: Does the next assistant get the conversation history? A: Yes — Squad transfers preserve the full conversation context so the receiving agent doesn't ask the same questions twice. You can also pass an explicit transferContext if you want to summarize state in custom format.

Q: Can a Squad include a Workflow? A: Yes — a Squad member can be either a free-form assistant OR a Workflow. Useful pattern: Greeter is free-form (handles small talk), BookingSpecialist is a Workflow (script-driven booking flow).

Q: How is this different from Workflow's transfer node? A: Workflow's transfer is one-way (pass the call to a human or another assistant and don't come back). Squad transfers are bidirectional — the BookingSpecialist can hand back to Greeter when the booking is done. Squads are state-aware; Workflow transfers are exits.


Source & Thanks

Built by Vapi. Commercial product with free trial.

docs.vapi.ai/squads — Official docs

🙏

Source & Thanks

Built by Vapi. Commercial product with free trial.

docs.vapi.ai/squads — Official docs

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets