Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vapi.ai/llms.txt

Use this file to discover all available pages before exploring further.

This guide details how to set up and manage inbound and outbound call functionality within Squads, leveraging AI assistants.

Key Concepts

  • Transient Assistant: A temporary assistant configuration passed directly in the request payload.
  • Assistant ID: A unique identifier referring to a pre-existing assistant configuration.
When using Assistant IDs, ensure the name property in the payload matches the associated assistant’s name accurately.

Inbound Call Configuration

When your server receives a request of type assistant-request, respond with a JSON payload structured as follows:
{
    "squad": {
        "members": [
            {
                "assistant": { 
                    "name": "Emma", 
                    "model": { "model": "gpt-4o", "provider": "openai" },
                    "voice": { "voiceId": "emma", "provider": "azure" },
                    "transcriber": { "provider": "deepgram" },
                    "firstMessage": "Hi, I am Emma, what is your name?",
                    "firstMessageMode": "assistant-speaks-first"
                },
                "assistantDestinations": [ 
                    {
                        "type": "assistant",
                        "assistantName": "Mary", 
                        "message": "Please hold on while I transfer you to our appointment booking assistant Mary.",
                        "description": "Transfer the user to the appointment booking assistant."
                    }
                ]
            },
            {
                "assistantId": "your-assistant-id" 
            }
        ]
    }
}
In this example:
  • The first members entry is a transient assistant (full configuration provided).
  • The second members entry uses an Assistant ID.
  • assistantDestinations defines how to transfer the call to another assistant.

Outbound Call Configuration

To initiate an outbound call, send a POST request to the API endpoint /call/phone with a JSON payload structured as follows:
{
    "squad": {
        "members": [
            {
                "assistant": { 
                    "name": "Emma", 
                    "model": { "model": "gpt-4o", "provider": "openai" },
                    "voice": { "voiceId": "emma", "provider": "azure" },
                    "transcriber": { "provider": "deepgram" },
                    "firstMessage": "Hi, I am Emma, what is your name?",
                    "firstMessageMode": "assistant-speaks-first"
                },
                "assistantDestinations": [ 
                    {
                        "type": "assistant",
                        "assistantName": "Mary", 
                        "message": "Please hold on while I transfer you to our appointment booking assistant Mary.",
                        "description": "Transfer the user to the appointment booking assistant."
                    }
                ]
            },
            {
                "assistantId": "your-assistant-id" 
            }
        ]
    },
    "customer": {
        "number": "your-phone-number" 
    },
    "phoneNumberId": "your-phone-number-id" 
}
Key points:
  • customer.number is the phone number to call.
  • phoneNumberId is a unique identifier for the phone number (obtain this from your provider).