@@ -37,7 +37,142 @@ Compose multiple assistants into a Squad for safe, specialized healthcare flows:
3737
3838See: [ Silent transfers] ( /squads/silent-transfers ) .
3939
40- ## 3. Test
40+ ## 3. Implement
41+
42+ <Tabs >
43+ <Tab title = " TypeScript (Server SDK)" >
44+ ``` typescript title="create web call with transient squad"
45+ import { VapiClient } from " @vapi-ai/server-sdk" ;
46+
47+ const vapi = new VapiClient ({ token: process .env .VAPI_API_KEY ! });
48+
49+ await vapi .calls .create ({
50+ transport: { type: " web" },
51+ squad: {
52+ members: [
53+ {
54+ assistant: {
55+ name: " Triage" ,
56+ model: {
57+ provider: " openai" ,
58+ model: " gpt-4o" ,
59+ messages: [{ role: " system" , content: " Medical triage assistant. Identify red flags." }],
60+ },
61+ firstMessage: " Hello, how can I help you today?" ,
62+ firstMessageMode: " assistant-speaks-first" ,
63+ },
64+ },
65+ {
66+ assistant: {
67+ name: " Emergency" ,
68+ model: {
69+ provider: " openai" ,
70+ model: " gpt-4o" ,
71+ messages: [{ role: " system" , content: " Emergency protocol assistant. Keep interaction brief and connect immediately." }],
72+ },
73+ },
74+ },
75+ {
76+ assistant: {
77+ name: " Scheduler" ,
78+ model: {
79+ provider: " openai" ,
80+ model: " gpt-4o" ,
81+ messages: [{ role: " system" , content: " Clinic scheduler. Offer next available slots, then confirm." }],
82+ },
83+ },
84+ },
85+ ],
86+ },
87+ });
88+ ```
89+
90+ ``` typescript title="create phone call with transient squad"
91+ await vapi .calls .create ({
92+ phoneNumberId: " YOUR_PHONE_NUMBER_ID" ,
93+ customer: { number: " +15551234567" },
94+ squad: { /* same squad as above */ members: [] },
95+ });
96+ ```
97+
98+ ``` typescript title="create and reuse a squad (optional)"
99+ const squad = await vapi .squads .create ({
100+ name: " Clinic Triage" ,
101+ members: [ /* same members as above */ ],
102+ });
103+
104+ await vapi .calls .create ({ transport: { type: " web" }, squadId: squad .id });
105+ ```
106+ </Tab >
107+
108+ <Tab title = " Python (Server SDK)" >
109+ ``` python title="create web call with transient squad"
110+ import os
111+ from vapi import Vapi
112+
113+ client = Vapi(token = os.getenv(" VAPI_API_KEY" ))
114+
115+ client.calls.create(
116+ transport = {" type" : " web" },
117+ squad = {
118+ " members" : [
119+ {" assistant" : {" name" : " Triage" , " model" : {" provider" : " openai" , " model" : " gpt-4o" , " messages" : [{" role" : " system" , " content" : " Medical triage assistant. Identify red flags." }]}, " first_message" : " Hello, how can I help you today?" , " first_message_mode" : " assistant-speaks-first" }},
120+ {" assistant" : {" name" : " Emergency" , " model" : {" provider" : " openai" , " model" : " gpt-4o" , " messages" : [{" role" : " system" , " content" : " Emergency protocol assistant. Keep interaction brief and connect immediately." }]}}},
121+ {" assistant" : {" name" : " Scheduler" , " model" : {" provider" : " openai" , " model" : " gpt-4o" , " messages" : [{" role" : " system" , " content" : " Clinic scheduler. Offer next available slots, then confirm." }]}}},
122+ ]
123+ },
124+ )
125+ ```
126+
127+ ``` python title="create phone call with transient squad"
128+ client.calls.create(
129+ phone_number_id = " YOUR_PHONE_NUMBER_ID" ,
130+ customer = {" number" : " +15551234567" },
131+ squad = {" members" : []}, # same members as above
132+ )
133+ ```
134+
135+ ``` python title="create and reuse a squad (optional)"
136+ squad = client.squads.create(
137+ name = " Clinic Triage" ,
138+ members = [ /* same members as above */ ],
139+ )
140+ client.calls.create(transport = {" type" : " web" }, squad_id = squad[" id" ])
141+ ```
142+ </Tab >
143+
144+ <Tab title = " cURL (web)" >
145+ ``` bash title="create web call"
146+ curl -X POST " https://api.vapi.ai/call/web" \
147+ -H " Authorization: Bearer $VAPI_API_KEY " \
148+ -H " Content-Type: application/json" \
149+ -d ' {
150+ "squad": {
151+ "members": [
152+ { "assistant": { "name": "Triage", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Medical triage assistant. Identify red flags."}] }, "firstMessage": "Hello, how can I help you today?", "firstMessageMode": "assistant-speaks-first" } },
153+ { "assistant": { "name": "Emergency", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Emergency protocol assistant. Keep interaction brief and connect immediately."}] } } },
154+ { "assistant": { "name": "Scheduler", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Clinic scheduler. Offer next available slots, then confirm."}] } } }
155+ ]
156+ }
157+ }'
158+ ```
159+ </Tab >
160+
161+ <Tab title = " cURL (phone)" >
162+ ``` bash title="create phone call"
163+ curl -X POST " https://api.vapi.ai/call" \
164+ -H " Authorization: Bearer $VAPI_API_KEY " \
165+ -H " Content-Type: application/json" \
166+ -d ' {
167+ "phoneNumberId": "YOUR_PHONE_NUMBER_ID",
168+ "customer": { "number": "+15551234567" },
169+ "squad": { "members": [] }
170+ }'
171+ ```
172+ </Tab >
173+ </Tabs >
174+
175+ ## 4. Test
41176
42177Attach a phone number to the Squad (or start with a Squad when creating a call) and test urgent vs routine scenarios.
43178
0 commit comments