@vapi-ai/web 2.2.6 → 2.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api.ts +1177 -838
- package/dist/api.d.ts +1031 -595
- package/dist/api.js +33 -0
- package/package.json +3 -2
package/dist/api.d.ts
CHANGED
|
@@ -166,19 +166,51 @@ export interface OpenAIMessage {
|
|
|
166
166
|
content: string | null;
|
|
167
167
|
role: 'assistant' | 'function' | 'user' | 'system' | 'tool';
|
|
168
168
|
}
|
|
169
|
+
export interface Mono {
|
|
170
|
+
/** This is the combined recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
|
|
171
|
+
combinedUrl?: string;
|
|
172
|
+
/** This is the mono recording url for the assistant. To enable, set `assistant.artifactPlan.recordingEnabled`. */
|
|
173
|
+
assistantUrl?: string;
|
|
174
|
+
/** This is the mono recording url for the customer. To enable, set `assistant.artifactPlan.recordingEnabled`. */
|
|
175
|
+
customerUrl?: string;
|
|
176
|
+
}
|
|
177
|
+
export interface Recording {
|
|
178
|
+
/** This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
|
|
179
|
+
stereoUrl?: string;
|
|
180
|
+
/** This is the video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. */
|
|
181
|
+
videoUrl?: string;
|
|
182
|
+
/** This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps. */
|
|
183
|
+
videoRecordingStartDelaySeconds?: number;
|
|
184
|
+
/** This is the mono recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
|
|
185
|
+
mono?: Mono;
|
|
186
|
+
}
|
|
169
187
|
export interface Artifact {
|
|
170
188
|
/** These are the messages that were spoken during the call. */
|
|
171
189
|
messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
|
|
172
190
|
/** These are the messages that were spoken during the call, formatted for OpenAI. */
|
|
173
191
|
messagesOpenAIFormatted?: OpenAIMessage[];
|
|
174
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`.
|
|
194
|
+
* @deprecated
|
|
195
|
+
*/
|
|
175
196
|
recordingUrl?: string;
|
|
176
|
-
/**
|
|
197
|
+
/**
|
|
198
|
+
* This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`.
|
|
199
|
+
* @deprecated
|
|
200
|
+
*/
|
|
177
201
|
stereoRecordingUrl?: string;
|
|
178
|
-
/**
|
|
202
|
+
/**
|
|
203
|
+
* This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`.
|
|
204
|
+
* @deprecated
|
|
205
|
+
*/
|
|
179
206
|
videoRecordingUrl?: string;
|
|
180
|
-
/**
|
|
207
|
+
/**
|
|
208
|
+
* This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps.
|
|
209
|
+
* @deprecated
|
|
210
|
+
*/
|
|
181
211
|
videoRecordingStartDelaySeconds?: number;
|
|
212
|
+
/** This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
|
|
213
|
+
recording?: Recording;
|
|
182
214
|
/** This is the transcript of the call. This is derived from `artifact.messages` but provided for convenience. */
|
|
183
215
|
transcript?: string;
|
|
184
216
|
/** This is the packet capture url for the call. This is only available for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`. */
|
|
@@ -326,9 +358,9 @@ export interface DeepgramTranscriber {
|
|
|
326
358
|
/** This is the transcription provider that will be used. */
|
|
327
359
|
provider: 'deepgram';
|
|
328
360
|
/** This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview */
|
|
329
|
-
model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
|
|
361
|
+
model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | 'whisper' | string;
|
|
330
362
|
/** This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview */
|
|
331
|
-
language?: 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
|
|
363
|
+
language?: 'ar' | 'az' | 'ba' | 'bg' | 'br' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'eu' | 'fi' | 'fr' | 'fr-CA' | 'ha' | 'haw' | 'he' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'is' | 'it' | 'ja' | 'jw' | 'kn' | 'ko' | 'ko-KR' | 'ln' | 'lt' | 'lv' | 'mk' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sl' | 'sn' | 'so' | 'sr' | 'su' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'tt' | 'uk' | 'ur' | 'vi' | 'yo' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
|
|
332
364
|
/**
|
|
333
365
|
* This will be use smart format option provided by Deepgram. It's default disabled because it can sometimes format numbers as times but it's getting better.
|
|
334
366
|
* @example false
|
|
@@ -485,7 +517,7 @@ export interface GoogleTranscriber {
|
|
|
485
517
|
/** This is the transcription provider that will be used. */
|
|
486
518
|
provider: 'google';
|
|
487
519
|
/** This is the model that will be used for the transcription. */
|
|
488
|
-
model?: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
520
|
+
model?: 'gemini-2.5-flash-preview-04-17' | 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
489
521
|
/** This is the language that will be set for the transcription. */
|
|
490
522
|
language?: 'Multilingual' | 'Arabic' | 'Bengali' | 'Bulgarian' | 'Chinese' | 'Croatian' | 'Czech' | 'Danish' | 'Dutch' | 'English' | 'Estonian' | 'Finnish' | 'French' | 'German' | 'Greek' | 'Hebrew' | 'Hindi' | 'Hungarian' | 'Indonesian' | 'Italian' | 'Japanese' | 'Korean' | 'Latvian' | 'Lithuanian' | 'Norwegian' | 'Polish' | 'Portuguese' | 'Romanian' | 'Russian' | 'Serbian' | 'Slovak' | 'Slovenian' | 'Spanish' | 'Swahili' | 'Swedish' | 'Thai' | 'Turkish' | 'Ukrainian' | 'Vietnamese';
|
|
491
523
|
/** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
|
|
@@ -582,9 +614,9 @@ export interface FallbackDeepgramTranscriber {
|
|
|
582
614
|
/** This is the transcription provider that will be used. */
|
|
583
615
|
provider: 'deepgram';
|
|
584
616
|
/** This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview */
|
|
585
|
-
model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
|
|
617
|
+
model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | 'whisper' | string;
|
|
586
618
|
/** This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview */
|
|
587
|
-
language?: 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
|
|
619
|
+
language?: 'ar' | 'az' | 'ba' | 'bg' | 'br' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'eu' | 'fi' | 'fr' | 'fr-CA' | 'ha' | 'haw' | 'he' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'is' | 'it' | 'ja' | 'jw' | 'kn' | 'ko' | 'ko-KR' | 'ln' | 'lt' | 'lv' | 'mk' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sl' | 'sn' | 'so' | 'sr' | 'su' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'tt' | 'uk' | 'ur' | 'vi' | 'yo' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
|
|
588
620
|
/**
|
|
589
621
|
* This will be use smart format option provided by Deepgram. It's default disabled because it can sometimes format numbers as times but it's getting better.
|
|
590
622
|
* @example false
|
|
@@ -731,7 +763,7 @@ export interface FallbackGoogleTranscriber {
|
|
|
731
763
|
/** This is the transcription provider that will be used. */
|
|
732
764
|
provider: 'google';
|
|
733
765
|
/** This is the model that will be used for the transcription. */
|
|
734
|
-
model?: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
766
|
+
model?: 'gemini-2.5-flash-preview-04-17' | 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
735
767
|
/** This is the language that will be set for the transcription. */
|
|
736
768
|
language?: 'Multilingual' | 'Arabic' | 'Bengali' | 'Bulgarian' | 'Chinese' | 'Croatian' | 'Czech' | 'Danish' | 'Dutch' | 'English' | 'Estonian' | 'Finnish' | 'French' | 'German' | 'Greek' | 'Hebrew' | 'Hindi' | 'Hungarian' | 'Indonesian' | 'Italian' | 'Japanese' | 'Korean' | 'Latvian' | 'Lithuanian' | 'Norwegian' | 'Polish' | 'Portuguese' | 'Romanian' | 'Russian' | 'Serbian' | 'Slovak' | 'Slovenian' | 'Spanish' | 'Swahili' | 'Swedish' | 'Thai' | 'Turkish' | 'Ukrainian' | 'Vietnamese';
|
|
737
769
|
}
|
|
@@ -770,7 +802,7 @@ export interface Condition {
|
|
|
770
802
|
* This is the value you want to compare against the parameter.
|
|
771
803
|
* @maxLength 1000
|
|
772
804
|
*/
|
|
773
|
-
value:
|
|
805
|
+
value: string;
|
|
774
806
|
}
|
|
775
807
|
export interface ToolMessageStart {
|
|
776
808
|
/**
|
|
@@ -1397,6 +1429,19 @@ export interface TransferDestinationStep {
|
|
|
1397
1429
|
/** This is the description of the destination, used by the AI to choose when and how to transfer the call. */
|
|
1398
1430
|
description?: string;
|
|
1399
1431
|
}
|
|
1432
|
+
export interface TransferFallbackPlan {
|
|
1433
|
+
/** This is the message the assistant will deliver to the customer if the transfer fails. */
|
|
1434
|
+
message: string | CustomMessage;
|
|
1435
|
+
/**
|
|
1436
|
+
* This controls what happens after delivering the failure message to the customer.
|
|
1437
|
+
* - true: End the call after delivering the failure message (default)
|
|
1438
|
+
* - false: Keep the assistant on the call to continue handling the customer's request
|
|
1439
|
+
*
|
|
1440
|
+
* @default true
|
|
1441
|
+
* @default true
|
|
1442
|
+
*/
|
|
1443
|
+
endCallEnabled?: boolean;
|
|
1444
|
+
}
|
|
1400
1445
|
export interface SummaryPlan {
|
|
1401
1446
|
/**
|
|
1402
1447
|
* These are the messages used to generate the summary.
|
|
@@ -1452,15 +1497,16 @@ export interface TransferPlan {
|
|
|
1452
1497
|
* - `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`: The assistant dials the destination, waits for the operator to speak, delivers the `message` to the destination party, and then connects the customer.
|
|
1453
1498
|
* - `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`: The assistant dials the destination, waits for the operator to speak, provides a summary of the call to the destination party, and then connects the customer.
|
|
1454
1499
|
* - `warm-transfer-twiml`: The assistant dials the destination, executes the twiml instructions on the destination call leg, connects the customer, and leaves the call.
|
|
1500
|
+
* - `warm-transfer-experimental`: The assistant puts the customer on hold, dials the destination, and if the destination answers (and is human), delivers a message or summary before connecting the customer. If the destination is unreachable or not human (e.g., with voicemail detection), the assistant delivers the `fallbackMessage` to the customer and optionally ends the call.
|
|
1455
1501
|
*
|
|
1456
1502
|
* @default 'blind-transfer'
|
|
1457
1503
|
*/
|
|
1458
|
-
mode: 'blind-transfer' | 'blind-transfer-add-summary-to-sip-header' | 'warm-transfer-say-message' | 'warm-transfer-say-summary' | 'warm-transfer-twiml' | 'warm-transfer-wait-for-operator-to-speak-first-and-then-say-message' | 'warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary';
|
|
1504
|
+
mode: 'blind-transfer' | 'blind-transfer-add-summary-to-sip-header' | 'warm-transfer-say-message' | 'warm-transfer-say-summary' | 'warm-transfer-twiml' | 'warm-transfer-wait-for-operator-to-speak-first-and-then-say-message' | 'warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary' | 'warm-transfer-experimental';
|
|
1459
1505
|
/**
|
|
1460
1506
|
* This is the message the assistant will deliver to the destination party before connecting the customer.
|
|
1461
1507
|
*
|
|
1462
1508
|
* Usage:
|
|
1463
|
-
* - Used only when `mode` is `blind-transfer-add-summary-to-sip-header`, `warm-transfer-say-message
|
|
1509
|
+
* - Used only when `mode` is `blind-transfer-add-summary-to-sip-header`, `warm-transfer-say-message`, `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`, or `warm-transfer-experimental`.
|
|
1464
1510
|
*/
|
|
1465
1511
|
message?: string | CustomMessage;
|
|
1466
1512
|
/**
|
|
@@ -1471,6 +1517,17 @@ export interface TransferPlan {
|
|
|
1471
1517
|
* @default "refer"
|
|
1472
1518
|
*/
|
|
1473
1519
|
sipVerb?: 'refer' | 'bye' | 'dial';
|
|
1520
|
+
/**
|
|
1521
|
+
* This is the URL to an audio file played while the customer is on hold during transfer.
|
|
1522
|
+
*
|
|
1523
|
+
* Usage:
|
|
1524
|
+
* - Used only when `mode` is `warm-transfer-experimental`.
|
|
1525
|
+
* - Used when transferring calls to play hold audio for the customer.
|
|
1526
|
+
* - Must be a publicly accessible URL to an audio file.
|
|
1527
|
+
* - Supported formats: MP3 and WAV.
|
|
1528
|
+
* - If not provided, the default hold audio will be used.
|
|
1529
|
+
*/
|
|
1530
|
+
holdAudioUrl?: string;
|
|
1474
1531
|
/**
|
|
1475
1532
|
* This is the TwiML instructions to execute on the destination call leg before connecting the customer.
|
|
1476
1533
|
*
|
|
@@ -1492,9 +1549,23 @@ export interface TransferPlan {
|
|
|
1492
1549
|
* This is the plan for generating a summary of the call to present to the destination party.
|
|
1493
1550
|
*
|
|
1494
1551
|
* Usage:
|
|
1495
|
-
* - Used only when `mode` is `blind-transfer-add-summary-to-sip-header` or `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`.
|
|
1552
|
+
* - Used only when `mode` is `blind-transfer-add-summary-to-sip-header` or `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary` or `warm-transfer-experimental`.
|
|
1496
1553
|
*/
|
|
1497
1554
|
summaryPlan?: SummaryPlan;
|
|
1555
|
+
/**
|
|
1556
|
+
* This flag includes the sipHeaders from above in the refer to sip uri as url encoded query params.
|
|
1557
|
+
*
|
|
1558
|
+
* @default false
|
|
1559
|
+
*/
|
|
1560
|
+
sipHeadersInReferToEnabled?: boolean;
|
|
1561
|
+
/**
|
|
1562
|
+
* This configures the fallback plan when the transfer fails (destination unreachable, busy, or not human).
|
|
1563
|
+
*
|
|
1564
|
+
* Usage:
|
|
1565
|
+
* - Used only when `mode` is `warm-transfer-experimental`.
|
|
1566
|
+
* - If not provided when using `warm-transfer-experimental`, a default message will be used.
|
|
1567
|
+
*/
|
|
1568
|
+
fallbackPlan?: TransferFallbackPlan;
|
|
1498
1569
|
}
|
|
1499
1570
|
export interface TransferDestinationNumber {
|
|
1500
1571
|
/**
|
|
@@ -1677,7 +1748,7 @@ export interface KnowledgeBase {
|
|
|
1677
1748
|
*/
|
|
1678
1749
|
provider: 'google';
|
|
1679
1750
|
/** The model to use for the knowledge base */
|
|
1680
|
-
model?: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
1751
|
+
model?: 'gemini-2.5-flash-preview-04-17' | 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
1681
1752
|
/** A description of the knowledge base */
|
|
1682
1753
|
description: string;
|
|
1683
1754
|
/** The file IDs associated with this knowledge base */
|
|
@@ -2276,7 +2347,7 @@ export interface GoogleModel {
|
|
|
2276
2347
|
/** This is the ID of the knowledge base the model will use. */
|
|
2277
2348
|
knowledgeBaseId?: string;
|
|
2278
2349
|
/** This is the Google model that will be used. */
|
|
2279
|
-
model: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
2350
|
+
model: 'gemini-2.5-flash-preview-04-17' | 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
|
|
2280
2351
|
provider: 'google';
|
|
2281
2352
|
/**
|
|
2282
2353
|
* This is the session configuration for the Gemini Flash 2.0 Multimodal Live API.
|
|
@@ -2439,12 +2510,12 @@ export interface OpenAIModel {
|
|
|
2439
2510
|
/** This is the provider that will be used for the model. */
|
|
2440
2511
|
provider: 'openai';
|
|
2441
2512
|
/** This is the OpenAI model that will be used. */
|
|
2442
|
-
model: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
|
|
2513
|
+
model: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3' | 'o3-mini' | 'o4-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
|
|
2443
2514
|
/**
|
|
2444
2515
|
* These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.
|
|
2445
2516
|
* @example ["gpt-4-0125-preview","gpt-4-0613"]
|
|
2446
2517
|
*/
|
|
2447
|
-
fallbackModels?: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
|
|
2518
|
+
fallbackModels?: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3' | 'o3-mini' | 'o4-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
|
|
2448
2519
|
/**
|
|
2449
2520
|
* This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
|
|
2450
2521
|
* @min 0
|
|
@@ -2631,6 +2702,116 @@ export interface TogetherAIModel {
|
|
|
2631
2702
|
*/
|
|
2632
2703
|
numFastTurns?: number;
|
|
2633
2704
|
}
|
|
2705
|
+
export interface Start {
|
|
2706
|
+
type: 'start';
|
|
2707
|
+
/** @maxLength 80 */
|
|
2708
|
+
name: string;
|
|
2709
|
+
/** This is for metadata you want to store on the task. */
|
|
2710
|
+
metadata?: object;
|
|
2711
|
+
}
|
|
2712
|
+
export interface Assistant {
|
|
2713
|
+
type: 'assistant';
|
|
2714
|
+
assistantId: string;
|
|
2715
|
+
/** @maxLength 80 */
|
|
2716
|
+
name: string;
|
|
2717
|
+
/** This is for metadata you want to store on the task. */
|
|
2718
|
+
metadata?: object;
|
|
2719
|
+
}
|
|
2720
|
+
export interface Say {
|
|
2721
|
+
type: 'say';
|
|
2722
|
+
/** @maxLength 1000 */
|
|
2723
|
+
exact?: string;
|
|
2724
|
+
/** @maxLength 1000 */
|
|
2725
|
+
prompt?: string;
|
|
2726
|
+
/** @maxLength 80 */
|
|
2727
|
+
name: string;
|
|
2728
|
+
/** This is for metadata you want to store on the task. */
|
|
2729
|
+
metadata?: object;
|
|
2730
|
+
}
|
|
2731
|
+
export interface SayHook {
|
|
2732
|
+
type: 'say';
|
|
2733
|
+
/** This is for metadata you want to store on the task. */
|
|
2734
|
+
metadata?: object;
|
|
2735
|
+
/** @maxLength 1000 */
|
|
2736
|
+
exact?: string;
|
|
2737
|
+
/** @maxLength 1000 */
|
|
2738
|
+
prompt?: string;
|
|
2739
|
+
}
|
|
2740
|
+
export interface Hook {
|
|
2741
|
+
/** @maxLength 80 */
|
|
2742
|
+
on: 'task.start' | 'task.output.confirmation' | 'task.delayed';
|
|
2743
|
+
do: SayHook[];
|
|
2744
|
+
}
|
|
2745
|
+
export interface Gather {
|
|
2746
|
+
type: 'gather';
|
|
2747
|
+
output: JsonSchema;
|
|
2748
|
+
/** This is whether or not the workflow should read back the gathered data to the user, and ask about its correctness. */
|
|
2749
|
+
confirmContent?: boolean;
|
|
2750
|
+
/**
|
|
2751
|
+
* This is a list of hooks for a task.
|
|
2752
|
+
* Each hook is a list of tasks to run on a trigger (such as on start, on failure, etc).
|
|
2753
|
+
* Only Say is supported for now.
|
|
2754
|
+
*/
|
|
2755
|
+
hooks?: Hook[];
|
|
2756
|
+
/** This is the number of times we should try to gather the information from the user before we failover to the fail path. An example of this would be a user refusing to give their phone number for privacy reasons, and then going down a different path on account of this */
|
|
2757
|
+
maxRetries?: number;
|
|
2758
|
+
/** This is a liquid templating string. On the first call to Gather, the template will be filled out with variables from the context, and will be spoken verbatim to the user. An example would be "Base on your zipcode, it looks like you could be in one of these counties: {{ counties | join: ", " }}. Which one do you live in?" */
|
|
2759
|
+
literalTemplate?: string;
|
|
2760
|
+
/** @maxLength 80 */
|
|
2761
|
+
name: string;
|
|
2762
|
+
/** This is for metadata you want to store on the task. */
|
|
2763
|
+
metadata?: object;
|
|
2764
|
+
}
|
|
2765
|
+
export interface ApiRequest {
|
|
2766
|
+
type: 'apiRequest';
|
|
2767
|
+
method: 'POST' | 'GET';
|
|
2768
|
+
/** Api endpoint to send requests to. */
|
|
2769
|
+
url: string;
|
|
2770
|
+
/**
|
|
2771
|
+
* These are the custom headers to include in the Api Request sent.
|
|
2772
|
+
*
|
|
2773
|
+
* Each key-value pair represents a header name and its value.
|
|
2774
|
+
*/
|
|
2775
|
+
headers?: JsonSchema;
|
|
2776
|
+
/**
|
|
2777
|
+
* This defined the JSON body of your Api Request. For example, if `body_schema`
|
|
2778
|
+
* included "my_field": "my_gather_statement.user_age", then the json body sent to the server would have that particular value assign to it.
|
|
2779
|
+
* Right now, only data from gather statements are supported.
|
|
2780
|
+
*/
|
|
2781
|
+
body?: JsonSchema;
|
|
2782
|
+
/**
|
|
2783
|
+
* This is the mode of the Api Request.
|
|
2784
|
+
* We only support BLOCKING and BACKGROUND for now.
|
|
2785
|
+
*/
|
|
2786
|
+
mode: 'blocking' | 'background';
|
|
2787
|
+
/**
|
|
2788
|
+
* This is a list of hooks for a task.
|
|
2789
|
+
* Each hook is a list of tasks to run on a trigger (such as on start, on failure, etc).
|
|
2790
|
+
* Only Say is supported for now.
|
|
2791
|
+
*/
|
|
2792
|
+
hooks?: Hook[];
|
|
2793
|
+
/** This is the schema for the outputs of the Api Request. */
|
|
2794
|
+
output?: JsonSchema;
|
|
2795
|
+
/** @maxLength 80 */
|
|
2796
|
+
name: string;
|
|
2797
|
+
/** This is for metadata you want to store on the task. */
|
|
2798
|
+
metadata?: object;
|
|
2799
|
+
}
|
|
2800
|
+
export interface Hangup {
|
|
2801
|
+
type: 'hangup';
|
|
2802
|
+
/** @maxLength 80 */
|
|
2803
|
+
name: string;
|
|
2804
|
+
/** This is for metadata you want to store on the task. */
|
|
2805
|
+
metadata?: object;
|
|
2806
|
+
}
|
|
2807
|
+
export interface Transfer {
|
|
2808
|
+
type: 'transfer';
|
|
2809
|
+
destination: object;
|
|
2810
|
+
/** @maxLength 80 */
|
|
2811
|
+
name: string;
|
|
2812
|
+
/** This is for metadata you want to store on the task. */
|
|
2813
|
+
metadata?: object;
|
|
2814
|
+
}
|
|
2634
2815
|
export interface AIEdgeCondition {
|
|
2635
2816
|
type: 'ai';
|
|
2636
2817
|
/**
|
|
@@ -2641,7 +2822,7 @@ export interface AIEdgeCondition {
|
|
|
2641
2822
|
}
|
|
2642
2823
|
export interface LogicEdgeCondition {
|
|
2643
2824
|
type: 'logic';
|
|
2644
|
-
/** @maxLength
|
|
2825
|
+
/** @maxLength 1000 */
|
|
2645
2826
|
liquid: string;
|
|
2646
2827
|
}
|
|
2647
2828
|
export interface FailedEdgeCondition {
|
|
@@ -2656,16 +2837,10 @@ export interface Edge {
|
|
|
2656
2837
|
/** This is for metadata you want to store on the edge. */
|
|
2657
2838
|
metadata?: object;
|
|
2658
2839
|
}
|
|
2659
|
-
export interface
|
|
2660
|
-
nodes: (Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
2840
|
+
export interface WorkflowUserEditable {
|
|
2841
|
+
nodes: (Start | Assistant | Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
2661
2842
|
/** These are the options for the workflow's LLM. */
|
|
2662
2843
|
model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
|
|
2663
|
-
id: string;
|
|
2664
|
-
orgId: string;
|
|
2665
|
-
/** @format date-time */
|
|
2666
|
-
createdAt: string;
|
|
2667
|
-
/** @format date-time */
|
|
2668
|
-
updatedAt: string;
|
|
2669
2844
|
/** @maxLength 80 */
|
|
2670
2845
|
name: string;
|
|
2671
2846
|
edges: Edge[];
|
|
@@ -2693,7 +2868,7 @@ export interface VapiModel {
|
|
|
2693
2868
|
/** This is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead. */
|
|
2694
2869
|
workflowId?: string;
|
|
2695
2870
|
/** This is the workflow that will be used for the call. To use an existing workflow, use `workflowId` instead. */
|
|
2696
|
-
workflow?:
|
|
2871
|
+
workflow?: WorkflowUserEditable;
|
|
2697
2872
|
/** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
|
|
2698
2873
|
model: string;
|
|
2699
2874
|
/**
|
|
@@ -2948,6 +3123,12 @@ export interface FallbackPlan {
|
|
|
2948
3123
|
voices: (FallbackAzureVoice | FallbackCartesiaVoice | FallbackHumeVoice | FallbackCustomVoice | FallbackDeepgramVoice | FallbackElevenLabsVoice | FallbackVapiVoice | FallbackLMNTVoice | FallbackOpenAIVoice | FallbackPlayHTVoice | FallbackRimeAIVoice | FallbackSmallestAIVoice | FallbackTavusVoice)[];
|
|
2949
3124
|
}
|
|
2950
3125
|
export interface AzureVoice {
|
|
3126
|
+
/**
|
|
3127
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3128
|
+
* @default true
|
|
3129
|
+
* @example true
|
|
3130
|
+
*/
|
|
3131
|
+
cachingEnabled?: boolean;
|
|
2951
3132
|
/** This is the voice provider that will be used. */
|
|
2952
3133
|
provider: 'azure';
|
|
2953
3134
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -2969,6 +3150,12 @@ export interface CartesiaExperimentalControls {
|
|
|
2969
3150
|
emotion?: 'anger:lowest' | 'anger:low' | 'anger:high' | 'anger:highest' | 'positivity:lowest' | 'positivity:low' | 'positivity:high' | 'positivity:highest' | 'surprise:lowest' | 'surprise:low' | 'surprise:high' | 'surprise:highest' | 'sadness:lowest' | 'sadness:low' | 'sadness:high' | 'sadness:highest' | 'curiosity:lowest' | 'curiosity:low' | 'curiosity:high' | 'curiosity:highest';
|
|
2970
3151
|
}
|
|
2971
3152
|
export interface CartesiaVoice {
|
|
3153
|
+
/**
|
|
3154
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3155
|
+
* @default true
|
|
3156
|
+
* @example true
|
|
3157
|
+
*/
|
|
3158
|
+
cachingEnabled?: boolean;
|
|
2972
3159
|
/** This is the voice provider that will be used. */
|
|
2973
3160
|
provider: 'cartesia';
|
|
2974
3161
|
/** The ID of the particular voice you want to use. */
|
|
@@ -2991,6 +3178,12 @@ export interface CartesiaVoice {
|
|
|
2991
3178
|
fallbackPlan?: FallbackPlan;
|
|
2992
3179
|
}
|
|
2993
3180
|
export interface CustomVoice {
|
|
3181
|
+
/**
|
|
3182
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3183
|
+
* @default true
|
|
3184
|
+
* @example true
|
|
3185
|
+
*/
|
|
3186
|
+
cachingEnabled?: boolean;
|
|
2994
3187
|
/** This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported. */
|
|
2995
3188
|
provider: 'custom-voice';
|
|
2996
3189
|
/** This is the plan for chunking the model output before it is sent to the voice provider. */
|
|
@@ -3024,6 +3217,12 @@ export interface CustomVoice {
|
|
|
3024
3217
|
fallbackPlan?: FallbackPlan;
|
|
3025
3218
|
}
|
|
3026
3219
|
export interface DeepgramVoice {
|
|
3220
|
+
/**
|
|
3221
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3222
|
+
* @default true
|
|
3223
|
+
* @example true
|
|
3224
|
+
*/
|
|
3225
|
+
cachingEnabled?: boolean;
|
|
3027
3226
|
/** This is the voice provider that will be used. */
|
|
3028
3227
|
provider: 'deepgram';
|
|
3029
3228
|
/**
|
|
@@ -3052,6 +3251,12 @@ export interface DeepgramVoice {
|
|
|
3052
3251
|
fallbackPlan?: FallbackPlan;
|
|
3053
3252
|
}
|
|
3054
3253
|
export interface ElevenLabsVoice {
|
|
3254
|
+
/**
|
|
3255
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3256
|
+
* @default true
|
|
3257
|
+
* @example true
|
|
3258
|
+
*/
|
|
3259
|
+
cachingEnabled?: boolean;
|
|
3055
3260
|
/** This is the voice provider that will be used. */
|
|
3056
3261
|
provider: '11labs';
|
|
3057
3262
|
/** This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library. */
|
|
@@ -3121,6 +3326,12 @@ export interface ElevenLabsVoice {
|
|
|
3121
3326
|
fallbackPlan?: FallbackPlan;
|
|
3122
3327
|
}
|
|
3123
3328
|
export interface HumeVoice {
|
|
3329
|
+
/**
|
|
3330
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3331
|
+
* @default true
|
|
3332
|
+
* @example true
|
|
3333
|
+
*/
|
|
3334
|
+
cachingEnabled?: boolean;
|
|
3124
3335
|
/** This is the voice provider that will be used. */
|
|
3125
3336
|
provider: 'hume';
|
|
3126
3337
|
/**
|
|
@@ -3148,6 +3359,12 @@ export interface HumeVoice {
|
|
|
3148
3359
|
fallbackPlan?: FallbackPlan;
|
|
3149
3360
|
}
|
|
3150
3361
|
export interface LMNTVoice {
|
|
3362
|
+
/**
|
|
3363
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3364
|
+
* @default true
|
|
3365
|
+
* @example true
|
|
3366
|
+
*/
|
|
3367
|
+
cachingEnabled?: boolean;
|
|
3151
3368
|
/** This is the voice provider that will be used. */
|
|
3152
3369
|
provider: 'lmnt';
|
|
3153
3370
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3165,6 +3382,12 @@ export interface LMNTVoice {
|
|
|
3165
3382
|
fallbackPlan?: FallbackPlan;
|
|
3166
3383
|
}
|
|
3167
3384
|
export interface NeuphonicVoice {
|
|
3385
|
+
/**
|
|
3386
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3387
|
+
* @default true
|
|
3388
|
+
* @example true
|
|
3389
|
+
*/
|
|
3390
|
+
cachingEnabled?: boolean;
|
|
3168
3391
|
/** This is the voice provider that will be used. */
|
|
3169
3392
|
provider: 'neuphonic';
|
|
3170
3393
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3192,6 +3415,12 @@ export interface NeuphonicVoice {
|
|
|
3192
3415
|
fallbackPlan?: FallbackPlan;
|
|
3193
3416
|
}
|
|
3194
3417
|
export interface OpenAIVoice {
|
|
3418
|
+
/**
|
|
3419
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3420
|
+
* @default true
|
|
3421
|
+
* @example true
|
|
3422
|
+
*/
|
|
3423
|
+
cachingEnabled?: boolean;
|
|
3195
3424
|
/** This is the voice provider that will be used. */
|
|
3196
3425
|
provider: 'openai';
|
|
3197
3426
|
/**
|
|
@@ -3220,6 +3449,12 @@ export interface OpenAIVoice {
|
|
|
3220
3449
|
fallbackPlan?: FallbackPlan;
|
|
3221
3450
|
}
|
|
3222
3451
|
export interface PlayHTVoice {
|
|
3452
|
+
/**
|
|
3453
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3454
|
+
* @default true
|
|
3455
|
+
* @example true
|
|
3456
|
+
*/
|
|
3457
|
+
cachingEnabled?: boolean;
|
|
3223
3458
|
/** This is the voice provider that will be used. */
|
|
3224
3459
|
provider: 'playht';
|
|
3225
3460
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3274,6 +3509,12 @@ export interface PlayHTVoice {
|
|
|
3274
3509
|
fallbackPlan?: FallbackPlan;
|
|
3275
3510
|
}
|
|
3276
3511
|
export interface RimeAIVoice {
|
|
3512
|
+
/**
|
|
3513
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3514
|
+
* @default true
|
|
3515
|
+
* @example true
|
|
3516
|
+
*/
|
|
3517
|
+
cachingEnabled?: boolean;
|
|
3277
3518
|
/** This is the voice provider that will be used. */
|
|
3278
3519
|
provider: 'rime-ai';
|
|
3279
3520
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3315,6 +3556,12 @@ export interface RimeAIVoice {
|
|
|
3315
3556
|
fallbackPlan?: FallbackPlan;
|
|
3316
3557
|
}
|
|
3317
3558
|
export interface SmallestAIVoice {
|
|
3559
|
+
/**
|
|
3560
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3561
|
+
* @default true
|
|
3562
|
+
* @example true
|
|
3563
|
+
*/
|
|
3564
|
+
cachingEnabled?: boolean;
|
|
3318
3565
|
/** This is the voice provider that will be used. */
|
|
3319
3566
|
provider: 'smallest-ai';
|
|
3320
3567
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3372,6 +3619,12 @@ export interface TavusConversationProperties {
|
|
|
3372
3619
|
awsAssumeRoleArn?: string;
|
|
3373
3620
|
}
|
|
3374
3621
|
export interface TavusVoice {
|
|
3622
|
+
/**
|
|
3623
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3624
|
+
* @default true
|
|
3625
|
+
* @example true
|
|
3626
|
+
*/
|
|
3627
|
+
cachingEnabled?: boolean;
|
|
3375
3628
|
/** This is the voice provider that will be used. */
|
|
3376
3629
|
provider: 'tavus';
|
|
3377
3630
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3394,6 +3647,12 @@ export interface TavusVoice {
|
|
|
3394
3647
|
fallbackPlan?: FallbackPlan;
|
|
3395
3648
|
}
|
|
3396
3649
|
export interface VapiVoice {
|
|
3650
|
+
/**
|
|
3651
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3652
|
+
* @default true
|
|
3653
|
+
* @example true
|
|
3654
|
+
*/
|
|
3655
|
+
cachingEnabled?: boolean;
|
|
3397
3656
|
/** This is the voice provider that will be used. */
|
|
3398
3657
|
provider: 'vapi';
|
|
3399
3658
|
/** The voices provided by Vapi */
|
|
@@ -3420,6 +3679,12 @@ export interface VapiVoice {
|
|
|
3420
3679
|
fallbackPlan?: FallbackPlan;
|
|
3421
3680
|
}
|
|
3422
3681
|
export interface FallbackAzureVoice {
|
|
3682
|
+
/**
|
|
3683
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3684
|
+
* @default true
|
|
3685
|
+
* @example true
|
|
3686
|
+
*/
|
|
3687
|
+
cachingEnabled?: boolean;
|
|
3423
3688
|
/** This is the voice provider that will be used. */
|
|
3424
3689
|
provider: 'azure';
|
|
3425
3690
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3434,6 +3699,12 @@ export interface FallbackAzureVoice {
|
|
|
3434
3699
|
chunkPlan?: ChunkPlan;
|
|
3435
3700
|
}
|
|
3436
3701
|
export interface FallbackCartesiaVoice {
|
|
3702
|
+
/**
|
|
3703
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3704
|
+
* @default true
|
|
3705
|
+
* @example true
|
|
3706
|
+
*/
|
|
3707
|
+
cachingEnabled?: boolean;
|
|
3437
3708
|
/** This is the voice provider that will be used. */
|
|
3438
3709
|
provider: 'cartesia';
|
|
3439
3710
|
/** The ID of the particular voice you want to use. */
|
|
@@ -3454,6 +3725,12 @@ export interface FallbackCartesiaVoice {
|
|
|
3454
3725
|
chunkPlan?: ChunkPlan;
|
|
3455
3726
|
}
|
|
3456
3727
|
export interface FallbackCustomVoice {
|
|
3728
|
+
/**
|
|
3729
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3730
|
+
* @default true
|
|
3731
|
+
* @example true
|
|
3732
|
+
*/
|
|
3733
|
+
cachingEnabled?: boolean;
|
|
3457
3734
|
/** This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported. */
|
|
3458
3735
|
provider: 'custom-voice';
|
|
3459
3736
|
/**
|
|
@@ -3485,6 +3762,12 @@ export interface FallbackCustomVoice {
|
|
|
3485
3762
|
chunkPlan?: ChunkPlan;
|
|
3486
3763
|
}
|
|
3487
3764
|
export interface FallbackDeepgramVoice {
|
|
3765
|
+
/**
|
|
3766
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3767
|
+
* @default true
|
|
3768
|
+
* @example true
|
|
3769
|
+
*/
|
|
3770
|
+
cachingEnabled?: boolean;
|
|
3488
3771
|
/** This is the voice provider that will be used. */
|
|
3489
3772
|
provider: 'deepgram';
|
|
3490
3773
|
/**
|
|
@@ -3511,6 +3794,12 @@ export interface FallbackDeepgramVoice {
|
|
|
3511
3794
|
chunkPlan?: ChunkPlan;
|
|
3512
3795
|
}
|
|
3513
3796
|
export interface FallbackElevenLabsVoice {
|
|
3797
|
+
/**
|
|
3798
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3799
|
+
* @default true
|
|
3800
|
+
* @example true
|
|
3801
|
+
*/
|
|
3802
|
+
cachingEnabled?: boolean;
|
|
3514
3803
|
/** This is the voice provider that will be used. */
|
|
3515
3804
|
provider: '11labs';
|
|
3516
3805
|
/** This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library. */
|
|
@@ -3578,6 +3867,12 @@ export interface FallbackElevenLabsVoice {
|
|
|
3578
3867
|
chunkPlan?: ChunkPlan;
|
|
3579
3868
|
}
|
|
3580
3869
|
export interface FallbackHumeVoice {
|
|
3870
|
+
/**
|
|
3871
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3872
|
+
* @default true
|
|
3873
|
+
* @example true
|
|
3874
|
+
*/
|
|
3875
|
+
cachingEnabled?: boolean;
|
|
3581
3876
|
/** This is the voice provider that will be used. */
|
|
3582
3877
|
provider: 'hume';
|
|
3583
3878
|
/**
|
|
@@ -3603,6 +3898,12 @@ export interface FallbackHumeVoice {
|
|
|
3603
3898
|
chunkPlan?: ChunkPlan;
|
|
3604
3899
|
}
|
|
3605
3900
|
export interface FallbackLMNTVoice {
|
|
3901
|
+
/**
|
|
3902
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3903
|
+
* @default true
|
|
3904
|
+
* @example true
|
|
3905
|
+
*/
|
|
3906
|
+
cachingEnabled?: boolean;
|
|
3606
3907
|
/** This is the voice provider that will be used. */
|
|
3607
3908
|
provider: 'lmnt';
|
|
3608
3909
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3618,6 +3919,12 @@ export interface FallbackLMNTVoice {
|
|
|
3618
3919
|
chunkPlan?: ChunkPlan;
|
|
3619
3920
|
}
|
|
3620
3921
|
export interface FallbackNeuphonicVoice {
|
|
3922
|
+
/**
|
|
3923
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3924
|
+
* @default true
|
|
3925
|
+
* @example true
|
|
3926
|
+
*/
|
|
3927
|
+
cachingEnabled?: boolean;
|
|
3621
3928
|
/** This is the voice provider that will be used. */
|
|
3622
3929
|
provider: 'neuphonic';
|
|
3623
3930
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3643,6 +3950,12 @@ export interface FallbackNeuphonicVoice {
|
|
|
3643
3950
|
chunkPlan?: ChunkPlan;
|
|
3644
3951
|
}
|
|
3645
3952
|
export interface FallbackOpenAIVoice {
|
|
3953
|
+
/**
|
|
3954
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3955
|
+
* @default true
|
|
3956
|
+
* @example true
|
|
3957
|
+
*/
|
|
3958
|
+
cachingEnabled?: boolean;
|
|
3646
3959
|
/** This is the voice provider that will be used. */
|
|
3647
3960
|
provider: 'openai';
|
|
3648
3961
|
/**
|
|
@@ -3669,6 +3982,12 @@ export interface FallbackOpenAIVoice {
|
|
|
3669
3982
|
chunkPlan?: ChunkPlan;
|
|
3670
3983
|
}
|
|
3671
3984
|
export interface FallbackPlayHTVoice {
|
|
3985
|
+
/**
|
|
3986
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
3987
|
+
* @default true
|
|
3988
|
+
* @example true
|
|
3989
|
+
*/
|
|
3990
|
+
cachingEnabled?: boolean;
|
|
3672
3991
|
/** This is the voice provider that will be used. */
|
|
3673
3992
|
provider: 'playht';
|
|
3674
3993
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3721,6 +4040,12 @@ export interface FallbackPlayHTVoice {
|
|
|
3721
4040
|
chunkPlan?: ChunkPlan;
|
|
3722
4041
|
}
|
|
3723
4042
|
export interface FallbackRimeAIVoice {
|
|
4043
|
+
/**
|
|
4044
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
4045
|
+
* @default true
|
|
4046
|
+
* @example true
|
|
4047
|
+
*/
|
|
4048
|
+
cachingEnabled?: boolean;
|
|
3724
4049
|
/** This is the voice provider that will be used. */
|
|
3725
4050
|
provider: 'rime-ai';
|
|
3726
4051
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3760,7 +4085,13 @@ export interface FallbackRimeAIVoice {
|
|
|
3760
4085
|
chunkPlan?: ChunkPlan;
|
|
3761
4086
|
}
|
|
3762
4087
|
export interface FallbackSmallestAIVoice {
|
|
3763
|
-
/**
|
|
4088
|
+
/**
|
|
4089
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
4090
|
+
* @default true
|
|
4091
|
+
* @example true
|
|
4092
|
+
*/
|
|
4093
|
+
cachingEnabled?: boolean;
|
|
4094
|
+
/** This is the voice provider that will be used. */
|
|
3764
4095
|
provider: 'smallest-ai';
|
|
3765
4096
|
/** This is the provider-specific ID that will be used. */
|
|
3766
4097
|
voiceId: 'emily' | 'jasmine' | 'arman' | 'james' | 'mithali' | 'aravind' | 'raj' | 'diya' | 'raman' | 'ananya' | 'isha' | 'william' | 'aarav' | 'monika' | 'niharika' | 'deepika' | 'raghav' | 'kajal' | 'radhika' | 'mansi' | 'nisha' | 'saurabh' | 'pooja' | 'saina' | 'sanya' | string;
|
|
@@ -3775,6 +4106,12 @@ export interface FallbackSmallestAIVoice {
|
|
|
3775
4106
|
chunkPlan?: ChunkPlan;
|
|
3776
4107
|
}
|
|
3777
4108
|
export interface FallbackTavusVoice {
|
|
4109
|
+
/**
|
|
4110
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
4111
|
+
* @default true
|
|
4112
|
+
* @example true
|
|
4113
|
+
*/
|
|
4114
|
+
cachingEnabled?: boolean;
|
|
3778
4115
|
/** This is the voice provider that will be used. */
|
|
3779
4116
|
provider: 'tavus';
|
|
3780
4117
|
/** This is the provider-specific ID that will be used. */
|
|
@@ -3795,6 +4132,12 @@ export interface FallbackTavusVoice {
|
|
|
3795
4132
|
chunkPlan?: ChunkPlan;
|
|
3796
4133
|
}
|
|
3797
4134
|
export interface FallbackVapiVoice {
|
|
4135
|
+
/**
|
|
4136
|
+
* This is the flag to toggle voice caching for the assistant.
|
|
4137
|
+
* @default true
|
|
4138
|
+
* @example true
|
|
4139
|
+
*/
|
|
4140
|
+
cachingEnabled?: boolean;
|
|
3798
4141
|
/** This is the voice provider that will be used. */
|
|
3799
4142
|
provider: 'vapi';
|
|
3800
4143
|
/** The voices provided by Vapi */
|
|
@@ -4100,7 +4443,7 @@ export interface CreateCloudflareCredentialDTO {
|
|
|
4100
4443
|
name?: string;
|
|
4101
4444
|
}
|
|
4102
4445
|
export interface OAuth2AuthenticationPlan {
|
|
4103
|
-
type: 'oauth2';
|
|
4446
|
+
type: 'oauth2' | 'aws-sts';
|
|
4104
4447
|
/** This is the OAuth2 URL. */
|
|
4105
4448
|
url: string;
|
|
4106
4449
|
/** This is the OAuth2 client ID. */
|
|
@@ -4508,7 +4851,11 @@ export interface CreateTogetherAICredentialDTO {
|
|
|
4508
4851
|
export interface CreateTwilioCredentialDTO {
|
|
4509
4852
|
provider: 'twilio';
|
|
4510
4853
|
/** This is not returned in the API. */
|
|
4511
|
-
authToken
|
|
4854
|
+
authToken?: string;
|
|
4855
|
+
/** This is not returned in the API. */
|
|
4856
|
+
apiKey?: string;
|
|
4857
|
+
/** This is not returned in the API. */
|
|
4858
|
+
apiSecret?: string;
|
|
4512
4859
|
accountSid: string;
|
|
4513
4860
|
/**
|
|
4514
4861
|
* This is the name of credential. This is just for your reference.
|
|
@@ -4603,31 +4950,130 @@ export interface TransferAssistantHookAction {
|
|
|
4603
4950
|
/** This is the destination details for the transfer - can be a phone number or SIP URI */
|
|
4604
4951
|
destination?: TransferDestinationNumber | TransferDestinationSip;
|
|
4605
4952
|
}
|
|
4953
|
+
export interface FunctionCallAssistantHookAction {
|
|
4954
|
+
/**
|
|
4955
|
+
* This determines if the tool is async.
|
|
4956
|
+
*
|
|
4957
|
+
* If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
|
|
4958
|
+
*
|
|
4959
|
+
* If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
|
|
4960
|
+
*
|
|
4961
|
+
* Defaults to synchronous (`false`).
|
|
4962
|
+
* @example false
|
|
4963
|
+
*/
|
|
4964
|
+
async?: boolean;
|
|
4965
|
+
/**
|
|
4966
|
+
* These are the messages that will be spoken to the user as the tool is running.
|
|
4967
|
+
*
|
|
4968
|
+
* For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
|
|
4969
|
+
*/
|
|
4970
|
+
messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
|
|
4971
|
+
/** The type of tool. "function" for Function tool. */
|
|
4972
|
+
type: 'function';
|
|
4973
|
+
/**
|
|
4974
|
+
* This is the function definition of the tool.
|
|
4975
|
+
*
|
|
4976
|
+
* For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
|
|
4977
|
+
*
|
|
4978
|
+
* An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
|
|
4979
|
+
*/
|
|
4980
|
+
function?: OpenAIFunction;
|
|
4981
|
+
/**
|
|
4982
|
+
* This is the server that will be hit when this tool is requested by the model.
|
|
4983
|
+
*
|
|
4984
|
+
* All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
|
|
4985
|
+
*
|
|
4986
|
+
* This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
|
|
4987
|
+
*/
|
|
4988
|
+
server?: Server;
|
|
4989
|
+
}
|
|
4990
|
+
export interface AssistantHookFilter {
|
|
4991
|
+
/**
|
|
4992
|
+
* This is the type of filter - currently only "oneOf" is supported
|
|
4993
|
+
* @maxLength 1000
|
|
4994
|
+
*/
|
|
4995
|
+
type: 'oneOf';
|
|
4996
|
+
/**
|
|
4997
|
+
* This is the key to filter on (e.g. "call.endedReason")
|
|
4998
|
+
* @maxLength 1000
|
|
4999
|
+
*/
|
|
5000
|
+
key: string;
|
|
5001
|
+
/** This is the array of possible values to match against */
|
|
5002
|
+
oneOf: string[];
|
|
5003
|
+
}
|
|
5004
|
+
export interface AssistantHookCallEnding {
|
|
5005
|
+
/**
|
|
5006
|
+
* This is the event that triggers this hook
|
|
5007
|
+
* @maxLength 1000
|
|
5008
|
+
*/
|
|
5009
|
+
on: 'call.ending';
|
|
5010
|
+
/** This is the set of actions to perform when the hook triggers */
|
|
5011
|
+
do: (TransferAssistantHookAction | FunctionCallAssistantHookAction)[];
|
|
5012
|
+
/** This is the set of filters that must match for the hook to trigger */
|
|
5013
|
+
filters?: AssistantHookFilter[];
|
|
5014
|
+
}
|
|
5015
|
+
export interface VoicemailDetectionBackoffPlan {
|
|
5016
|
+
/**
|
|
5017
|
+
* This is the number of seconds to wait before starting the first retry attempt.
|
|
5018
|
+
* @min 0
|
|
5019
|
+
* @default 5
|
|
5020
|
+
*/
|
|
5021
|
+
startAtSeconds?: number;
|
|
5022
|
+
/**
|
|
5023
|
+
* This is the interval in seconds between retry attempts.
|
|
5024
|
+
* @min 2.5
|
|
5025
|
+
* @default 5
|
|
5026
|
+
*/
|
|
5027
|
+
frequencySeconds?: number;
|
|
5028
|
+
/**
|
|
5029
|
+
* This is the maximum number of retry attempts before giving up.
|
|
5030
|
+
* @min 1
|
|
5031
|
+
* @max 10
|
|
5032
|
+
* @default 6
|
|
5033
|
+
*/
|
|
5034
|
+
maxRetries?: number;
|
|
5035
|
+
}
|
|
4606
5036
|
export interface GoogleVoicemailDetectionPlan {
|
|
4607
|
-
/** This is the provider to use for voicemail detection. */
|
|
4608
|
-
provider: 'google';
|
|
4609
5037
|
/**
|
|
4610
|
-
* This is
|
|
5038
|
+
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
4611
5039
|
*
|
|
4612
|
-
*
|
|
4613
|
-
*
|
|
5040
|
+
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
5041
|
+
*
|
|
5042
|
+
* - Setting too low a value means that the bot will start speaking its voicemail message too early. If it does so before the actual beep, it will get cut off. You should definitely tune this to your use case.
|
|
5043
|
+
*
|
|
5044
|
+
* @default 30
|
|
5045
|
+
* @min 0
|
|
4614
5046
|
* @max 60
|
|
4615
|
-
* @
|
|
5047
|
+
* @min 0
|
|
5048
|
+
* @max 30
|
|
5049
|
+
* @default 30
|
|
4616
5050
|
*/
|
|
4617
|
-
|
|
5051
|
+
beepMaxAwaitSeconds?: number;
|
|
5052
|
+
/** This is the provider to use for voicemail detection. */
|
|
5053
|
+
provider: 'google';
|
|
5054
|
+
/** This is the backoff plan for the voicemail detection. */
|
|
5055
|
+
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
4618
5056
|
}
|
|
4619
5057
|
export interface OpenAIVoicemailDetectionPlan {
|
|
4620
|
-
/** This is the provider to use for voicemail detection. */
|
|
4621
|
-
provider: 'openai';
|
|
4622
5058
|
/**
|
|
4623
|
-
* This is
|
|
5059
|
+
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
4624
5060
|
*
|
|
4625
|
-
*
|
|
4626
|
-
*
|
|
5061
|
+
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
5062
|
+
*
|
|
5063
|
+
* - Setting too low a value means that the bot will start speaking its voicemail message too early. If it does so before the actual beep, it will get cut off. You should definitely tune this to your use case.
|
|
5064
|
+
*
|
|
5065
|
+
* @default 30
|
|
5066
|
+
* @min 0
|
|
4627
5067
|
* @max 60
|
|
4628
|
-
* @
|
|
5068
|
+
* @min 0
|
|
5069
|
+
* @max 30
|
|
5070
|
+
* @default 30
|
|
4629
5071
|
*/
|
|
4630
|
-
|
|
5072
|
+
beepMaxAwaitSeconds?: number;
|
|
5073
|
+
/** This is the provider to use for voicemail detection. */
|
|
5074
|
+
provider: 'openai';
|
|
5075
|
+
/** This is the backoff plan for the voicemail detection. */
|
|
5076
|
+
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
4631
5077
|
}
|
|
4632
5078
|
export interface TwilioVoicemailDetectionPlan {
|
|
4633
5079
|
/** This is the provider to use for voicemail detection. */
|
|
@@ -4704,6 +5150,27 @@ export interface TwilioVoicemailDetectionPlan {
|
|
|
4704
5150
|
*/
|
|
4705
5151
|
machineDetectionSilenceTimeout?: number;
|
|
4706
5152
|
}
|
|
5153
|
+
export interface VapiVoicemailDetectionPlan {
|
|
5154
|
+
/**
|
|
5155
|
+
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
5156
|
+
*
|
|
5157
|
+
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
5158
|
+
*
|
|
5159
|
+
* - Setting too low a value means that the bot will start speaking its voicemail message too early. If it does so before the actual beep, it will get cut off. You should definitely tune this to your use case.
|
|
5160
|
+
*
|
|
5161
|
+
* @default 30
|
|
5162
|
+
* @min 0
|
|
5163
|
+
* @max 60
|
|
5164
|
+
* @min 0
|
|
5165
|
+
* @max 30
|
|
5166
|
+
* @default 30
|
|
5167
|
+
*/
|
|
5168
|
+
beepMaxAwaitSeconds?: number;
|
|
5169
|
+
/** This is the provider to use for voicemail detection. */
|
|
5170
|
+
provider: 'vapi';
|
|
5171
|
+
/** This is the backoff plan for the voicemail detection. */
|
|
5172
|
+
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
5173
|
+
}
|
|
4707
5174
|
export interface CompliancePlan {
|
|
4708
5175
|
/**
|
|
4709
5176
|
* When this is enabled, no logs, recordings, or transcriptions will be stored.
|
|
@@ -5096,7 +5563,7 @@ export interface StartSpeakingPlan {
|
|
|
5096
5563
|
* @deprecated
|
|
5097
5564
|
* @example false
|
|
5098
5565
|
*/
|
|
5099
|
-
smartEndpointingEnabled?:
|
|
5566
|
+
smartEndpointingEnabled?: boolean | 'livekit';
|
|
5100
5567
|
/**
|
|
5101
5568
|
* This is the plan for smart endpointing. Pick between Vapi smart endpointing or LiveKit smart endpointing (or nothing). We strongly recommend using livekit endpointing when working in English. LiveKit endpointing is not supported in other languages, yet.
|
|
5102
5569
|
*
|
|
@@ -5217,32 +5684,6 @@ export interface MonitorPlan {
|
|
|
5217
5684
|
*/
|
|
5218
5685
|
controlEnabled?: boolean;
|
|
5219
5686
|
}
|
|
5220
|
-
export interface AssistantHookFilter {
|
|
5221
|
-
/**
|
|
5222
|
-
* This is the type of filter - currently only "oneOf" is supported
|
|
5223
|
-
* @maxLength 1000
|
|
5224
|
-
*/
|
|
5225
|
-
type: 'oneOf';
|
|
5226
|
-
/**
|
|
5227
|
-
* This is the key to filter on (e.g. "call.endedReason")
|
|
5228
|
-
* @maxLength 1000
|
|
5229
|
-
*/
|
|
5230
|
-
key: string;
|
|
5231
|
-
/** This is the array of possible values to match against */
|
|
5232
|
-
oneOf: string[];
|
|
5233
|
-
}
|
|
5234
|
-
export type AssistantHookActionBase = object;
|
|
5235
|
-
export interface AssistantHooks {
|
|
5236
|
-
/**
|
|
5237
|
-
* This is the event that triggers this hook
|
|
5238
|
-
* @maxLength 1000
|
|
5239
|
-
*/
|
|
5240
|
-
on: 'call.ending';
|
|
5241
|
-
/** This is the set of filters that must match for the hook to trigger */
|
|
5242
|
-
filters?: AssistantHookFilter[];
|
|
5243
|
-
/** This is the set of actions to perform when the hook triggers */
|
|
5244
|
-
do: AssistantHookActionBase[];
|
|
5245
|
-
}
|
|
5246
5687
|
export interface KeypadInputPlan {
|
|
5247
5688
|
/**
|
|
5248
5689
|
* This keeps track of whether the user has enabled keypad input.
|
|
@@ -5303,17 +5744,9 @@ export interface CreateAssistantDTO {
|
|
|
5303
5744
|
* This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
|
|
5304
5745
|
* You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
|
|
5305
5746
|
*/
|
|
5306
|
-
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
* @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
|
|
5310
|
-
*/
|
|
5311
|
-
clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
|
|
5312
|
-
/**
|
|
5313
|
-
* These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
|
|
5314
|
-
* @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
|
|
5315
|
-
*/
|
|
5316
|
-
serverMessages?: 'conversation-update' | 'end-of-call-report' | 'function-call' | 'hang' | 'language-changed' | 'language-change-detected' | 'model-output' | 'phone-call-control' | 'speech-update' | 'status-update' | 'transcript' | "transcript[transcriptType='final']" | 'tool-calls' | 'transfer-destination-request' | 'transfer-update' | 'user-interrupted' | 'voice-input';
|
|
5747
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
5748
|
+
clientMessages: object[][];
|
|
5749
|
+
serverMessages: object[][];
|
|
5317
5750
|
/**
|
|
5318
5751
|
* How many seconds of silence to wait before ending the call. Defaults to 30.
|
|
5319
5752
|
*
|
|
@@ -5459,6 +5892,8 @@ export interface CreateAssistantDTO {
|
|
|
5459
5892
|
} & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
|
|
5460
5893
|
provider: 'slack.oauth2-authorization';
|
|
5461
5894
|
} & CreateSlackOAuth2AuthorizationCredentialDTO))[];
|
|
5895
|
+
/** This is a set of actions that will be performed on certain events. */
|
|
5896
|
+
hooks?: AssistantHookCallEnding[];
|
|
5462
5897
|
/**
|
|
5463
5898
|
* This is the name of the assistant.
|
|
5464
5899
|
*
|
|
@@ -5541,8 +5976,6 @@ export interface CreateAssistantDTO {
|
|
|
5541
5976
|
* 3. org.serverUrl
|
|
5542
5977
|
*/
|
|
5543
5978
|
server?: Server;
|
|
5544
|
-
/** This is a set of actions that will be performed on certain events. */
|
|
5545
|
-
hooks?: AssistantHooks[];
|
|
5546
5979
|
keypadInputPlan?: KeypadInputPlan;
|
|
5547
5980
|
}
|
|
5548
5981
|
export interface AssistantOverrides {
|
|
@@ -5581,17 +6014,9 @@ export interface AssistantOverrides {
|
|
|
5581
6014
|
* This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
|
|
5582
6015
|
* You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
|
|
5583
6016
|
*/
|
|
5584
|
-
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
* @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
|
|
5588
|
-
*/
|
|
5589
|
-
clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
|
|
5590
|
-
/**
|
|
5591
|
-
* These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
|
|
5592
|
-
* @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
|
|
5593
|
-
*/
|
|
5594
|
-
serverMessages?: 'conversation-update' | 'end-of-call-report' | 'function-call' | 'hang' | 'language-changed' | 'language-change-detected' | 'model-output' | 'phone-call-control' | 'speech-update' | 'status-update' | 'transcript' | "transcript[transcriptType='final']" | 'tool-calls' | 'transfer-destination-request' | 'transfer-update' | 'user-interrupted' | 'voice-input';
|
|
6017
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
6018
|
+
clientMessages: object[][];
|
|
6019
|
+
serverMessages: object[][];
|
|
5595
6020
|
/**
|
|
5596
6021
|
* How many seconds of silence to wait before ending the call. Defaults to 30.
|
|
5597
6022
|
*
|
|
@@ -5737,6 +6162,8 @@ export interface AssistantOverrides {
|
|
|
5737
6162
|
} & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
|
|
5738
6163
|
provider: 'slack.oauth2-authorization';
|
|
5739
6164
|
} & CreateSlackOAuth2AuthorizationCredentialDTO))[];
|
|
6165
|
+
/** This is a set of actions that will be performed on certain events. */
|
|
6166
|
+
hooks?: AssistantHookCallEnding[];
|
|
5740
6167
|
/**
|
|
5741
6168
|
* These are values that will be used to replace the template variables in the assistant messages and other text-based fields.
|
|
5742
6169
|
* This uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html
|
|
@@ -5829,8 +6256,6 @@ export interface AssistantOverrides {
|
|
|
5829
6256
|
* 3. org.serverUrl
|
|
5830
6257
|
*/
|
|
5831
6258
|
server?: Server;
|
|
5832
|
-
/** This is a set of actions that will be performed on certain events. */
|
|
5833
|
-
hooks?: AssistantHooks[];
|
|
5834
6259
|
keypadInputPlan?: KeypadInputPlan;
|
|
5835
6260
|
}
|
|
5836
6261
|
export interface SquadMemberDTO {
|
|
@@ -5863,6 +6288,29 @@ export interface CreateSquadDTO {
|
|
|
5863
6288
|
*/
|
|
5864
6289
|
membersOverrides?: AssistantOverrides;
|
|
5865
6290
|
}
|
|
6291
|
+
export interface CreateWorkflowDTO {
|
|
6292
|
+
nodes: (Start | Assistant | Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
6293
|
+
/** These are the options for the workflow's LLM. */
|
|
6294
|
+
model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
|
|
6295
|
+
/** @maxLength 80 */
|
|
6296
|
+
name: string;
|
|
6297
|
+
edges: Edge[];
|
|
6298
|
+
}
|
|
6299
|
+
export interface TransferPhoneNumberHookAction {
|
|
6300
|
+
/** This is the type of action - must be "transfer" */
|
|
6301
|
+
type: 'transfer';
|
|
6302
|
+
/** This is the destination details for the transfer - can be a phone number or SIP URI */
|
|
6303
|
+
destination?: TransferDestinationNumber | TransferDestinationSip;
|
|
6304
|
+
}
|
|
6305
|
+
export interface SayPhoneNumberHookAction {
|
|
6306
|
+
/** This is the type of action - must be "say" */
|
|
6307
|
+
type: 'say';
|
|
6308
|
+
/**
|
|
6309
|
+
* This is the message to say
|
|
6310
|
+
* @maxLength 4000
|
|
6311
|
+
*/
|
|
6312
|
+
exact: string;
|
|
6313
|
+
}
|
|
5866
6314
|
export interface PhoneNumberHookCallRinging {
|
|
5867
6315
|
/**
|
|
5868
6316
|
* This is the event to trigger the hook on
|
|
@@ -5870,7 +6318,7 @@ export interface PhoneNumberHookCallRinging {
|
|
|
5870
6318
|
*/
|
|
5871
6319
|
on: 'call.ringing';
|
|
5872
6320
|
/** This is the set of actions to perform when the hook triggers */
|
|
5873
|
-
do:
|
|
6321
|
+
do: (TransferPhoneNumberHookAction | SayPhoneNumberHookAction)[];
|
|
5874
6322
|
}
|
|
5875
6323
|
export interface ImportTwilioPhoneNumberDTO {
|
|
5876
6324
|
/**
|
|
@@ -5884,6 +6332,16 @@ export interface ImportTwilioPhoneNumberDTO {
|
|
|
5884
6332
|
fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
|
|
5885
6333
|
/** This is the hooks that will be used for incoming calls to this phone number. */
|
|
5886
6334
|
hooks?: PhoneNumberHookCallRinging[];
|
|
6335
|
+
/**
|
|
6336
|
+
* Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.
|
|
6337
|
+
*
|
|
6338
|
+
* If set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.
|
|
6339
|
+
* If `true` or omitted (default), Vapi will configure both the voice and messaging URLs.
|
|
6340
|
+
*
|
|
6341
|
+
* @default true
|
|
6342
|
+
* @default true
|
|
6343
|
+
*/
|
|
6344
|
+
smsEnabled?: boolean;
|
|
5887
6345
|
/**
|
|
5888
6346
|
* These are the digits of the phone number you own on your Twilio.
|
|
5889
6347
|
* @deprecated
|
|
@@ -5892,7 +6350,11 @@ export interface ImportTwilioPhoneNumberDTO {
|
|
|
5892
6350
|
/** This is your Twilio Account SID that will be used to handle this phone number. */
|
|
5893
6351
|
twilioAccountSid: string;
|
|
5894
6352
|
/** This is the Twilio Auth Token that will be used to handle this phone number. */
|
|
5895
|
-
twilioAuthToken
|
|
6353
|
+
twilioAuthToken?: string;
|
|
6354
|
+
/** This is the Twilio API Key that will be used to handle this phone number. If AuthToken is provided, this will be ignored. */
|
|
6355
|
+
twilioApiKey?: string;
|
|
6356
|
+
/** This is the Twilio API Secret that will be used to handle this phone number. If AuthToken is provided, this will be ignored. */
|
|
6357
|
+
twilioApiSecret?: string;
|
|
5896
6358
|
/**
|
|
5897
6359
|
* This is the name of the phone number. This is just for your own reference.
|
|
5898
6360
|
* @maxLength 40
|
|
@@ -5901,13 +6363,19 @@ export interface ImportTwilioPhoneNumberDTO {
|
|
|
5901
6363
|
/**
|
|
5902
6364
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
5903
6365
|
*
|
|
5904
|
-
* If neither `assistantId` nor `
|
|
6366
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
5905
6367
|
*/
|
|
5906
6368
|
assistantId?: string;
|
|
6369
|
+
/**
|
|
6370
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
6371
|
+
*
|
|
6372
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
6373
|
+
*/
|
|
6374
|
+
workflowId?: string;
|
|
5907
6375
|
/**
|
|
5908
6376
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
5909
6377
|
*
|
|
5910
|
-
* If neither `assistantId` nor `
|
|
6378
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
5911
6379
|
*/
|
|
5912
6380
|
squadId?: string;
|
|
5913
6381
|
/**
|
|
@@ -5978,7 +6446,7 @@ export interface Call {
|
|
|
5978
6446
|
/** This is the type of call. */
|
|
5979
6447
|
type?: 'inboundPhoneCall' | 'outboundPhoneCall' | 'webCall' | 'vapi.websocketCall';
|
|
5980
6448
|
/** These are the costs of individual components of the call in USD. */
|
|
5981
|
-
costs?: (TransportCost | TranscriberCost | ModelCost | VoiceCost | VapiCost | VoicemailDetectionCost | AnalysisCost)[];
|
|
6449
|
+
costs?: (TransportCost | TranscriberCost | ModelCost | VoiceCost | VapiCost | VoicemailDetectionCost | AnalysisCost | KnowledgeBaseCost)[];
|
|
5982
6450
|
messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
|
|
5983
6451
|
/**
|
|
5984
6452
|
* This is the provider of the call.
|
|
@@ -5995,7 +6463,7 @@ export interface Call {
|
|
|
5995
6463
|
/** This is the status of the call. */
|
|
5996
6464
|
status?: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
|
|
5997
6465
|
/** This is the explanation for how the call ended. */
|
|
5998
|
-
endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
|
|
6466
|
+
endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-providerfault-transport-never-connected' | 'call.in-progress.error-vapifault-worker-not-available' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'call.forwarding.operator-busy' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
|
|
5999
6467
|
/** This is the destination where the call ended up being transferred to. If the call was not transferred, this will be empty. */
|
|
6000
6468
|
destination?: TransferDestinationNumber | TransferDestinationSip;
|
|
6001
6469
|
/** This is the unique identifier for the call. */
|
|
@@ -6040,16 +6508,56 @@ export interface Call {
|
|
|
6040
6508
|
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6041
6509
|
*/
|
|
6042
6510
|
phoneCallProviderId?: string;
|
|
6043
|
-
/**
|
|
6511
|
+
/**
|
|
6512
|
+
* This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead.
|
|
6513
|
+
* Usage:
|
|
6514
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6515
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6516
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6517
|
+
*/
|
|
6044
6518
|
assistantId?: string;
|
|
6045
|
-
/**
|
|
6519
|
+
/**
|
|
6520
|
+
* This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.
|
|
6521
|
+
* Usage:
|
|
6522
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6523
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6524
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6525
|
+
*/
|
|
6046
6526
|
assistant?: CreateAssistantDTO;
|
|
6047
6527
|
/** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
|
|
6048
6528
|
assistantOverrides?: AssistantOverrides;
|
|
6049
|
-
/**
|
|
6529
|
+
/**
|
|
6530
|
+
* This is the squad that will be used for the call. To use a transient squad, use `squad` instead.
|
|
6531
|
+
* Usage:
|
|
6532
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6533
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6534
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6535
|
+
*/
|
|
6050
6536
|
squadId?: string;
|
|
6051
|
-
/**
|
|
6537
|
+
/**
|
|
6538
|
+
* This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.
|
|
6539
|
+
* Usage:
|
|
6540
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6541
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6542
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6543
|
+
*/
|
|
6052
6544
|
squad?: CreateSquadDTO;
|
|
6545
|
+
/**
|
|
6546
|
+
* This is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.
|
|
6547
|
+
* Usage:
|
|
6548
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6549
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6550
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6551
|
+
*/
|
|
6552
|
+
workflowId?: string;
|
|
6553
|
+
/**
|
|
6554
|
+
* This is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.
|
|
6555
|
+
* Usage:
|
|
6556
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6557
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6558
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6559
|
+
*/
|
|
6560
|
+
workflow?: CreateWorkflowDTO;
|
|
6053
6561
|
/**
|
|
6054
6562
|
* This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
|
|
6055
6563
|
*
|
|
@@ -6110,16 +6618,56 @@ export interface CreateCallDTO {
|
|
|
6110
6618
|
schedulePlan?: SchedulePlan;
|
|
6111
6619
|
/** This is the transport of the call. */
|
|
6112
6620
|
transport?: object;
|
|
6113
|
-
/**
|
|
6621
|
+
/**
|
|
6622
|
+
* This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead.
|
|
6623
|
+
* Usage:
|
|
6624
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6625
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6626
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6627
|
+
*/
|
|
6114
6628
|
assistantId?: string;
|
|
6115
|
-
/**
|
|
6629
|
+
/**
|
|
6630
|
+
* This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.
|
|
6631
|
+
* Usage:
|
|
6632
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6633
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6634
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6635
|
+
*/
|
|
6116
6636
|
assistant?: CreateAssistantDTO;
|
|
6117
6637
|
/** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
|
|
6118
6638
|
assistantOverrides?: AssistantOverrides;
|
|
6119
|
-
/**
|
|
6639
|
+
/**
|
|
6640
|
+
* This is the squad that will be used for the call. To use a transient squad, use `squad` instead.
|
|
6641
|
+
* Usage:
|
|
6642
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6643
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6644
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6645
|
+
*/
|
|
6120
6646
|
squadId?: string;
|
|
6121
|
-
/**
|
|
6647
|
+
/**
|
|
6648
|
+
* This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.
|
|
6649
|
+
* Usage:
|
|
6650
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6651
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6652
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6653
|
+
*/
|
|
6122
6654
|
squad?: CreateSquadDTO;
|
|
6655
|
+
/**
|
|
6656
|
+
* This is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.
|
|
6657
|
+
* Usage:
|
|
6658
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6659
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6660
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6661
|
+
*/
|
|
6662
|
+
workflowId?: string;
|
|
6663
|
+
/**
|
|
6664
|
+
* This is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.
|
|
6665
|
+
* Usage:
|
|
6666
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6667
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6668
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6669
|
+
*/
|
|
6670
|
+
workflow?: CreateWorkflowDTO;
|
|
6123
6671
|
/**
|
|
6124
6672
|
* This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
|
|
6125
6673
|
*
|
|
@@ -6170,477 +6718,167 @@ export interface CreateOutboundCallDTO {
|
|
|
6170
6718
|
schedulePlan?: SchedulePlan;
|
|
6171
6719
|
/** This is the transport of the call. */
|
|
6172
6720
|
transport?: object;
|
|
6173
|
-
/**
|
|
6721
|
+
/**
|
|
6722
|
+
* This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead.
|
|
6723
|
+
* Usage:
|
|
6724
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6725
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6726
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6727
|
+
*/
|
|
6174
6728
|
assistantId?: string;
|
|
6175
|
-
/**
|
|
6729
|
+
/**
|
|
6730
|
+
* This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.
|
|
6731
|
+
* Usage:
|
|
6732
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6733
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6734
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6735
|
+
*/
|
|
6176
6736
|
assistant?: CreateAssistantDTO;
|
|
6177
6737
|
/** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
|
|
6178
6738
|
assistantOverrides?: AssistantOverrides;
|
|
6179
|
-
/**
|
|
6739
|
+
/**
|
|
6740
|
+
* This is the squad that will be used for the call. To use a transient squad, use `squad` instead.
|
|
6741
|
+
* Usage:
|
|
6742
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6743
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6744
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6745
|
+
*/
|
|
6180
6746
|
squadId?: string;
|
|
6181
|
-
/**
|
|
6747
|
+
/**
|
|
6748
|
+
* This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.
|
|
6749
|
+
* Usage:
|
|
6750
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6751
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6752
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6753
|
+
*/
|
|
6182
6754
|
squad?: CreateSquadDTO;
|
|
6183
6755
|
/**
|
|
6184
|
-
* This is the
|
|
6185
|
-
*
|
|
6186
|
-
*
|
|
6187
|
-
|
|
6188
|
-
|
|
6189
|
-
/**
|
|
6190
|
-
* This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
|
|
6191
|
-
*
|
|
6192
|
-
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6193
|
-
*/
|
|
6194
|
-
phoneNumber?: ImportTwilioPhoneNumberDTO;
|
|
6195
|
-
/**
|
|
6196
|
-
* This is the customer that will be called. To call a transient customer , use `customer` instead.
|
|
6197
|
-
*
|
|
6198
|
-
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6199
|
-
*/
|
|
6200
|
-
customerId?: string;
|
|
6201
|
-
/**
|
|
6202
|
-
* This is the customer that will be called. To call an existing customer, use `customerId` instead.
|
|
6203
|
-
*
|
|
6204
|
-
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6205
|
-
*/
|
|
6206
|
-
customer?: CreateCustomerDTO;
|
|
6207
|
-
}
|
|
6208
|
-
export interface CreateWebCallDTO {
|
|
6209
|
-
/** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
|
|
6210
|
-
assistantId?: string;
|
|
6211
|
-
/** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
|
|
6212
|
-
assistant?: CreateAssistantDTO;
|
|
6213
|
-
/** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
|
|
6214
|
-
assistantOverrides?: AssistantOverrides;
|
|
6215
|
-
/** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
|
|
6216
|
-
squadId?: string;
|
|
6217
|
-
/** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
|
|
6218
|
-
squad?: CreateSquadDTO;
|
|
6219
|
-
}
|
|
6220
|
-
export interface UpdateCallDTO {
|
|
6221
|
-
/**
|
|
6222
|
-
* This is the name of the call. This is just for your own reference.
|
|
6223
|
-
* @maxLength 40
|
|
6224
|
-
*/
|
|
6225
|
-
name?: string;
|
|
6226
|
-
}
|
|
6227
|
-
export type ChatServiceResponse = object;
|
|
6228
|
-
export interface ChatCompletionMessageMetadata {
|
|
6229
|
-
taskName: string;
|
|
6230
|
-
taskType: string;
|
|
6231
|
-
taskOutput: string;
|
|
6232
|
-
taskState?: object;
|
|
6233
|
-
nodeTrace?: string[];
|
|
6234
|
-
}
|
|
6235
|
-
export interface ChatCompletionMessageWorkflows {
|
|
6236
|
-
role: object;
|
|
6237
|
-
content: string | null;
|
|
6238
|
-
metadata?: ChatCompletionMessageMetadata;
|
|
6239
|
-
}
|
|
6240
|
-
export interface Say {
|
|
6241
|
-
type: 'say';
|
|
6242
|
-
/** @maxLength 1000 */
|
|
6243
|
-
exact?: string;
|
|
6244
|
-
/** @maxLength 1000 */
|
|
6245
|
-
prompt?: string;
|
|
6246
|
-
/** @maxLength 80 */
|
|
6247
|
-
name: string;
|
|
6248
|
-
/** This is for metadata you want to store on the task. */
|
|
6249
|
-
metadata?: object;
|
|
6250
|
-
}
|
|
6251
|
-
export interface SayHook {
|
|
6252
|
-
type: 'say';
|
|
6253
|
-
/** This is for metadata you want to store on the task. */
|
|
6254
|
-
metadata?: object;
|
|
6255
|
-
/** @maxLength 1000 */
|
|
6256
|
-
exact?: string;
|
|
6257
|
-
/** @maxLength 1000 */
|
|
6258
|
-
prompt?: string;
|
|
6259
|
-
}
|
|
6260
|
-
export interface Hook {
|
|
6261
|
-
/** @maxLength 80 */
|
|
6262
|
-
on: 'task.start' | 'task.output.confirmation' | 'task.delayed';
|
|
6263
|
-
do: SayHook[];
|
|
6264
|
-
}
|
|
6265
|
-
export interface Gather {
|
|
6266
|
-
type: 'gather';
|
|
6267
|
-
output: JsonSchema;
|
|
6268
|
-
/** This is whether or not the workflow should read back the gathered data to the user, and ask about its correctness. */
|
|
6269
|
-
confirmContent?: boolean;
|
|
6270
|
-
/**
|
|
6271
|
-
* This is a list of hooks for a task.
|
|
6272
|
-
* Each hook is a list of tasks to run on a trigger (such as on start, on failure, etc).
|
|
6273
|
-
* Only Say is supported for now.
|
|
6274
|
-
*/
|
|
6275
|
-
hooks?: Hook[];
|
|
6276
|
-
/** This is the number of times we should try to gather the information from the user before we failover to the fail path. An example of this would be a user refusing to give their phone number for privacy reasons, and then going down a different path on account of this */
|
|
6277
|
-
maxRetries?: number;
|
|
6278
|
-
/** This is a liquid templating string. On the first call to Gather, the template will be filled out with variables from the context, and will be spoken verbatim to the user. An example would be "Base on your zipcode, it looks like you could be in one of these counties: {{ counties | join: ", " }}. Which one do you live in?" */
|
|
6279
|
-
literalTemplate?: string;
|
|
6280
|
-
/** @maxLength 80 */
|
|
6281
|
-
name: string;
|
|
6282
|
-
/** This is for metadata you want to store on the task. */
|
|
6283
|
-
metadata?: object;
|
|
6284
|
-
}
|
|
6285
|
-
export interface ApiRequest {
|
|
6286
|
-
type: 'apiRequest';
|
|
6287
|
-
method: 'POST' | 'GET';
|
|
6288
|
-
/** Api endpoint to send requests to. */
|
|
6289
|
-
url: string;
|
|
6290
|
-
/**
|
|
6291
|
-
* These are the custom headers to include in the Api Request sent.
|
|
6292
|
-
*
|
|
6293
|
-
* Each key-value pair represents a header name and its value.
|
|
6294
|
-
*/
|
|
6295
|
-
headers?: JsonSchema;
|
|
6296
|
-
/**
|
|
6297
|
-
* This defined the JSON body of your Api Request. For example, if `body_schema`
|
|
6298
|
-
* included "my_field": "my_gather_statement.user_age", then the json body sent to the server would have that particular value assign to it.
|
|
6299
|
-
* Right now, only data from gather statements are supported.
|
|
6300
|
-
*/
|
|
6301
|
-
body?: JsonSchema;
|
|
6302
|
-
/**
|
|
6303
|
-
* This is the mode of the Api Request.
|
|
6304
|
-
* We only support BLOCKING and BACKGROUND for now.
|
|
6305
|
-
*/
|
|
6306
|
-
mode: 'blocking' | 'background';
|
|
6307
|
-
/**
|
|
6308
|
-
* This is a list of hooks for a task.
|
|
6309
|
-
* Each hook is a list of tasks to run on a trigger (such as on start, on failure, etc).
|
|
6310
|
-
* Only Say is supported for now.
|
|
6756
|
+
* This is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.
|
|
6757
|
+
* Usage:
|
|
6758
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6759
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6760
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6311
6761
|
*/
|
|
6312
|
-
hooks?: Hook[];
|
|
6313
|
-
/** This is the schema for the outputs of the Api Request. */
|
|
6314
|
-
output?: JsonSchema;
|
|
6315
|
-
/** @maxLength 80 */
|
|
6316
|
-
name: string;
|
|
6317
|
-
/** This is for metadata you want to store on the task. */
|
|
6318
|
-
metadata?: object;
|
|
6319
|
-
}
|
|
6320
|
-
export interface Hangup {
|
|
6321
|
-
type: 'hangup';
|
|
6322
|
-
/** @maxLength 80 */
|
|
6323
|
-
name: string;
|
|
6324
|
-
/** This is for metadata you want to store on the task. */
|
|
6325
|
-
metadata?: object;
|
|
6326
|
-
}
|
|
6327
|
-
export interface Transfer {
|
|
6328
|
-
type: 'transfer';
|
|
6329
|
-
destination: object;
|
|
6330
|
-
/** @maxLength 80 */
|
|
6331
|
-
name: string;
|
|
6332
|
-
/** This is for metadata you want to store on the task. */
|
|
6333
|
-
metadata?: object;
|
|
6334
|
-
}
|
|
6335
|
-
export interface CreateWorkflowDTO {
|
|
6336
|
-
nodes: (Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
6337
|
-
/** These are the options for the workflow's LLM. */
|
|
6338
|
-
model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
|
|
6339
|
-
/** @maxLength 80 */
|
|
6340
|
-
name: string;
|
|
6341
|
-
edges: Edge[];
|
|
6342
|
-
}
|
|
6343
|
-
export interface ChatCompletionsDTO {
|
|
6344
|
-
messages: ChatCompletionMessageWorkflows[];
|
|
6345
6762
|
workflowId?: string;
|
|
6346
|
-
workflow?: CreateWorkflowDTO;
|
|
6347
|
-
}
|
|
6348
|
-
export interface Assistant {
|
|
6349
|
-
/** These are the options for the assistant's transcriber. */
|
|
6350
|
-
transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber | GoogleTranscriber | OpenAITranscriber;
|
|
6351
|
-
/** These are the options for the assistant's LLM. */
|
|
6352
|
-
model?: AnyscaleModel | AnthropicModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | VapiModel | XaiModel;
|
|
6353
|
-
/**
|
|
6354
|
-
* These are the options for the assistant's voice.
|
|
6355
|
-
* @default {"provider":"playht","voiceId":"jennifer"}
|
|
6356
|
-
*/
|
|
6357
|
-
voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
|
|
6358
6763
|
/**
|
|
6359
|
-
* This is
|
|
6360
|
-
*
|
|
6361
|
-
*
|
|
6362
|
-
*
|
|
6363
|
-
|
|
6364
|
-
firstMessage?: string;
|
|
6365
|
-
/** @default false */
|
|
6366
|
-
firstMessageInterruptionsEnabled?: boolean;
|
|
6367
|
-
/**
|
|
6368
|
-
* This is the mode for the first message. Default is 'assistant-speaks-first'.
|
|
6369
|
-
*
|
|
6370
|
-
* Use:
|
|
6371
|
-
* - 'assistant-speaks-first' to have the assistant speak first.
|
|
6372
|
-
* - 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
|
|
6373
|
-
* - 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
|
|
6374
|
-
*
|
|
6375
|
-
* @default 'assistant-speaks-first'
|
|
6376
|
-
* @example "assistant-speaks-first"
|
|
6377
|
-
*/
|
|
6378
|
-
firstMessageMode?: 'assistant-speaks-first' | 'assistant-speaks-first-with-model-generated-message' | 'assistant-waits-for-user';
|
|
6379
|
-
/**
|
|
6380
|
-
* These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
|
|
6381
|
-
* This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
|
|
6382
|
-
* You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
|
|
6383
|
-
*/
|
|
6384
|
-
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
|
|
6385
|
-
/**
|
|
6386
|
-
* These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
|
|
6387
|
-
* @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
|
|
6388
|
-
*/
|
|
6389
|
-
clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
|
|
6390
|
-
/**
|
|
6391
|
-
* These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
|
|
6392
|
-
* @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
|
|
6393
|
-
*/
|
|
6394
|
-
serverMessages?: 'conversation-update' | 'end-of-call-report' | 'function-call' | 'hang' | 'language-changed' | 'language-change-detected' | 'model-output' | 'phone-call-control' | 'speech-update' | 'status-update' | 'transcript' | "transcript[transcriptType='final']" | 'tool-calls' | 'transfer-destination-request' | 'transfer-update' | 'user-interrupted' | 'voice-input';
|
|
6395
|
-
/**
|
|
6396
|
-
* How many seconds of silence to wait before ending the call. Defaults to 30.
|
|
6397
|
-
*
|
|
6398
|
-
* @default 30
|
|
6399
|
-
* @min 10
|
|
6400
|
-
* @max 3600
|
|
6401
|
-
* @example 30
|
|
6402
|
-
*/
|
|
6403
|
-
silenceTimeoutSeconds?: number;
|
|
6404
|
-
/**
|
|
6405
|
-
* This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.
|
|
6406
|
-
*
|
|
6407
|
-
* @default 600 (10 minutes)
|
|
6408
|
-
* @min 10
|
|
6409
|
-
* @max 43200
|
|
6410
|
-
* @example 600
|
|
6411
|
-
*/
|
|
6412
|
-
maxDurationSeconds?: number;
|
|
6413
|
-
/**
|
|
6414
|
-
* This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
|
|
6415
|
-
* You can also provide a custom sound by providing a URL to an audio file.
|
|
6416
|
-
* @maxLength 1000
|
|
6417
|
-
*/
|
|
6418
|
-
backgroundSound?: 'off' | 'office' | string;
|
|
6419
|
-
/**
|
|
6420
|
-
* This enables filtering of noise and background speech while the user is talking.
|
|
6421
|
-
*
|
|
6422
|
-
* Default `false` while in beta.
|
|
6423
|
-
*
|
|
6424
|
-
* @default false
|
|
6425
|
-
* @example false
|
|
6426
|
-
*/
|
|
6427
|
-
backgroundDenoisingEnabled?: boolean;
|
|
6428
|
-
/**
|
|
6429
|
-
* This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.
|
|
6430
|
-
*
|
|
6431
|
-
* Default `false` while in beta.
|
|
6432
|
-
*
|
|
6433
|
-
* @default false
|
|
6434
|
-
* @example false
|
|
6435
|
-
*/
|
|
6436
|
-
modelOutputInMessagesEnabled?: boolean;
|
|
6437
|
-
/** These are the configurations to be passed to the transport providers of assistant's calls, like Twilio. You can store multiple configurations for different transport providers. For a call, only the configuration matching the call transport provider is used. */
|
|
6438
|
-
transportConfigurations?: TransportConfigurationTwilio[];
|
|
6439
|
-
/**
|
|
6440
|
-
* This is the plan for observability configuration of assistant's calls.
|
|
6441
|
-
* Currently supports Langfuse for tracing and monitoring.
|
|
6764
|
+
* This is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.
|
|
6765
|
+
* Usage:
|
|
6766
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6767
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6768
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6442
6769
|
*/
|
|
6443
|
-
|
|
6444
|
-
/** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
|
|
6445
|
-
credentials?: (({
|
|
6446
|
-
provider: '11labs';
|
|
6447
|
-
} & CreateElevenLabsCredentialDTO) | ({
|
|
6448
|
-
provider: 'anthropic';
|
|
6449
|
-
} & CreateAnthropicCredentialDTO) | ({
|
|
6450
|
-
provider: 'anyscale';
|
|
6451
|
-
} & CreateAnyscaleCredentialDTO) | ({
|
|
6452
|
-
provider: 'assembly-ai';
|
|
6453
|
-
} & CreateAssemblyAICredentialDTO) | ({
|
|
6454
|
-
provider: 'azure-openai';
|
|
6455
|
-
} & CreateAzureOpenAICredentialDTO) | ({
|
|
6456
|
-
provider: 'azure';
|
|
6457
|
-
} & CreateAzureCredentialDTO) | ({
|
|
6458
|
-
provider: 'byo-sip-trunk';
|
|
6459
|
-
} & CreateByoSipTrunkCredentialDTO) | ({
|
|
6460
|
-
provider: 'cartesia';
|
|
6461
|
-
} & CreateCartesiaCredentialDTO) | ({
|
|
6462
|
-
provider: 'cerebras';
|
|
6463
|
-
} & CreateCerebrasCredentialDTO) | ({
|
|
6464
|
-
provider: 'cloudflare';
|
|
6465
|
-
} & CreateCloudflareCredentialDTO) | ({
|
|
6466
|
-
provider: 'custom-llm';
|
|
6467
|
-
} & CreateCustomLLMCredentialDTO) | ({
|
|
6468
|
-
provider: 'deepgram';
|
|
6469
|
-
} & CreateDeepgramCredentialDTO) | ({
|
|
6470
|
-
provider: 'deepinfra';
|
|
6471
|
-
} & CreateDeepInfraCredentialDTO) | ({
|
|
6472
|
-
provider: 'deep-seek';
|
|
6473
|
-
} & CreateDeepSeekCredentialDTO) | ({
|
|
6474
|
-
provider: 'gcp';
|
|
6475
|
-
} & CreateGcpCredentialDTO) | ({
|
|
6476
|
-
provider: 'gladia';
|
|
6477
|
-
} & CreateGladiaCredentialDTO) | ({
|
|
6478
|
-
provider: 'gohighlevel';
|
|
6479
|
-
} & CreateGoHighLevelCredentialDTO) | ({
|
|
6480
|
-
provider: 'google';
|
|
6481
|
-
} & CreateGoogleCredentialDTO) | ({
|
|
6482
|
-
provider: 'groq';
|
|
6483
|
-
} & CreateGroqCredentialDTO) | ({
|
|
6484
|
-
provider: 'inflection-ai';
|
|
6485
|
-
} & CreateInflectionAICredentialDTO) | ({
|
|
6486
|
-
provider: 'langfuse';
|
|
6487
|
-
} & CreateLangfuseCredentialDTO) | ({
|
|
6488
|
-
provider: 'lmnt';
|
|
6489
|
-
} & CreateLmntCredentialDTO) | ({
|
|
6490
|
-
provider: 'make';
|
|
6491
|
-
} & CreateMakeCredentialDTO) | ({
|
|
6492
|
-
provider: 'openai';
|
|
6493
|
-
} & CreateOpenAICredentialDTO) | ({
|
|
6494
|
-
provider: 'openrouter';
|
|
6495
|
-
} & CreateOpenRouterCredentialDTO) | ({
|
|
6496
|
-
provider: 'perplexity-ai';
|
|
6497
|
-
} & CreatePerplexityAICredentialDTO) | ({
|
|
6498
|
-
provider: 'playht';
|
|
6499
|
-
} & CreatePlayHTCredentialDTO) | ({
|
|
6500
|
-
provider: 'rime-ai';
|
|
6501
|
-
} & CreateRimeAICredentialDTO) | ({
|
|
6502
|
-
provider: 'runpod';
|
|
6503
|
-
} & CreateRunpodCredentialDTO) | ({
|
|
6504
|
-
provider: 's3';
|
|
6505
|
-
} & CreateS3CredentialDTO) | ({
|
|
6506
|
-
provider: 'supabase';
|
|
6507
|
-
} & CreateSupabaseCredentialDTO) | ({
|
|
6508
|
-
provider: 'smallest-ai';
|
|
6509
|
-
} & CreateSmallestAICredentialDTO) | ({
|
|
6510
|
-
provider: 'tavus';
|
|
6511
|
-
} & CreateTavusCredentialDTO) | ({
|
|
6512
|
-
provider: 'together-ai';
|
|
6513
|
-
} & CreateTogetherAICredentialDTO) | ({
|
|
6514
|
-
provider: 'twilio';
|
|
6515
|
-
} & CreateTwilioCredentialDTO) | ({
|
|
6516
|
-
provider: 'vonage';
|
|
6517
|
-
} & CreateVonageCredentialDTO) | ({
|
|
6518
|
-
provider: 'webhook';
|
|
6519
|
-
} & CreateWebhookCredentialDTO) | ({
|
|
6520
|
-
provider: 'xai';
|
|
6521
|
-
} & CreateXAiCredentialDTO) | ({
|
|
6522
|
-
provider: 'neuphonic';
|
|
6523
|
-
} & CreateNeuphonicCredentialDTO) | ({
|
|
6524
|
-
provider: 'hume';
|
|
6525
|
-
} & CreateHumeCredentialDTO) | ({
|
|
6526
|
-
provider: 'mistral';
|
|
6527
|
-
} & CreateMistralCredentialDTO) | ({
|
|
6528
|
-
provider: 'speechmatics';
|
|
6529
|
-
} & CreateSpeechmaticsCredentialDTO) | ({
|
|
6530
|
-
provider: 'trieve';
|
|
6531
|
-
} & CreateTrieveCredentialDTO) | ({
|
|
6532
|
-
provider: 'google.calendar.oauth2-client';
|
|
6533
|
-
} & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
|
|
6534
|
-
provider: 'google.calendar.oauth2-authorization';
|
|
6535
|
-
} & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
|
|
6536
|
-
provider: 'google.sheets.oauth2-authorization';
|
|
6537
|
-
} & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
|
|
6538
|
-
provider: 'slack.oauth2-authorization';
|
|
6539
|
-
} & CreateSlackOAuth2AuthorizationCredentialDTO))[];
|
|
6770
|
+
workflow?: CreateWorkflowDTO;
|
|
6540
6771
|
/**
|
|
6541
|
-
* This is the
|
|
6772
|
+
* This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
|
|
6542
6773
|
*
|
|
6543
|
-
*
|
|
6544
|
-
* @maxLength 40
|
|
6774
|
+
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6545
6775
|
*/
|
|
6546
|
-
|
|
6776
|
+
phoneNumberId?: string;
|
|
6547
6777
|
/**
|
|
6548
|
-
* This is the
|
|
6778
|
+
* This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
|
|
6549
6779
|
*
|
|
6550
|
-
*
|
|
6551
|
-
* @maxLength 1000
|
|
6780
|
+
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6552
6781
|
*/
|
|
6553
|
-
|
|
6782
|
+
phoneNumber?: ImportTwilioPhoneNumberDTO;
|
|
6554
6783
|
/**
|
|
6555
|
-
* This is the
|
|
6784
|
+
* This is the customer that will be called. To call a transient customer , use `customer` instead.
|
|
6556
6785
|
*
|
|
6557
|
-
*
|
|
6558
|
-
* @maxLength 1000
|
|
6786
|
+
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6559
6787
|
*/
|
|
6560
|
-
|
|
6561
|
-
/** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */
|
|
6562
|
-
endCallPhrases?: string[];
|
|
6563
|
-
compliancePlan?: CompliancePlan;
|
|
6564
|
-
/** This is for metadata you want to store on the assistant. */
|
|
6565
|
-
metadata?: object;
|
|
6566
|
-
/** This is the plan for analysis of assistant's calls. Stored in `call.analysis`. */
|
|
6567
|
-
analysisPlan?: AnalysisPlan;
|
|
6788
|
+
customerId?: string;
|
|
6568
6789
|
/**
|
|
6569
|
-
* This is the
|
|
6790
|
+
* This is the customer that will be called. To call an existing customer, use `customerId` instead.
|
|
6570
6791
|
*
|
|
6571
|
-
*
|
|
6792
|
+
* Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
|
|
6572
6793
|
*/
|
|
6573
|
-
|
|
6794
|
+
customer?: CreateCustomerDTO;
|
|
6795
|
+
}
|
|
6796
|
+
export interface CreateWebCallDTO {
|
|
6574
6797
|
/**
|
|
6575
|
-
* This is the
|
|
6576
|
-
*
|
|
6577
|
-
*
|
|
6798
|
+
* This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead.
|
|
6799
|
+
* Usage:
|
|
6800
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6801
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6802
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6578
6803
|
*/
|
|
6579
|
-
|
|
6804
|
+
assistantId?: string;
|
|
6580
6805
|
/**
|
|
6581
|
-
* This is the
|
|
6582
|
-
*
|
|
6583
|
-
*
|
|
6584
|
-
*
|
|
6585
|
-
*
|
|
6586
|
-
* - The assistant is so fast that it's actually interrupting the customer.
|
|
6806
|
+
* This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.
|
|
6807
|
+
* Usage:
|
|
6808
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6809
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6810
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6587
6811
|
*/
|
|
6588
|
-
|
|
6812
|
+
assistant?: CreateAssistantDTO;
|
|
6813
|
+
/** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
|
|
6814
|
+
assistantOverrides?: AssistantOverrides;
|
|
6589
6815
|
/**
|
|
6590
|
-
* This is the
|
|
6591
|
-
*
|
|
6592
|
-
*
|
|
6593
|
-
*
|
|
6594
|
-
*
|
|
6595
|
-
* - The assistant is getting interrupted by phrases that are just acknowledgments.
|
|
6596
|
-
* - The assistant is getting interrupted by background noises.
|
|
6597
|
-
* - The assistant is not properly stopping -- it starts talking right after getting interrupted.
|
|
6816
|
+
* This is the squad that will be used for the call. To use a transient squad, use `squad` instead.
|
|
6817
|
+
* Usage:
|
|
6818
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6819
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6820
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6598
6821
|
*/
|
|
6599
|
-
|
|
6822
|
+
squadId?: string;
|
|
6600
6823
|
/**
|
|
6601
|
-
* This is
|
|
6602
|
-
*
|
|
6824
|
+
* This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.
|
|
6603
6825
|
* Usage:
|
|
6604
|
-
*
|
|
6605
|
-
*
|
|
6606
|
-
*
|
|
6607
|
-
* Note, `serverMessages`, `clientMessages`, `serverUrl` and `serverUrlSecret` are currently at the root level but will be moved to `monitorPlan` in the future. Will remain backwards compatible
|
|
6826
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6827
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6828
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6608
6829
|
*/
|
|
6609
|
-
|
|
6610
|
-
/** These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this. */
|
|
6611
|
-
credentialIds?: string[];
|
|
6830
|
+
squad?: CreateSquadDTO;
|
|
6612
6831
|
/**
|
|
6613
|
-
* This is
|
|
6614
|
-
*
|
|
6615
|
-
*
|
|
6616
|
-
*
|
|
6617
|
-
*
|
|
6618
|
-
* 2. phoneNumber.serverUrl
|
|
6619
|
-
* 3. org.serverUrl
|
|
6832
|
+
* This is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.
|
|
6833
|
+
* Usage:
|
|
6834
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6835
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6836
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6620
6837
|
*/
|
|
6621
|
-
|
|
6622
|
-
/** This is a set of actions that will be performed on certain events. */
|
|
6623
|
-
hooks?: AssistantHooks[];
|
|
6624
|
-
keypadInputPlan?: KeypadInputPlan;
|
|
6625
|
-
/** This is the unique identifier for the assistant. */
|
|
6626
|
-
id: string;
|
|
6627
|
-
/** This is the unique identifier for the org that this assistant belongs to. */
|
|
6628
|
-
orgId: string;
|
|
6838
|
+
workflowId?: string;
|
|
6629
6839
|
/**
|
|
6630
|
-
* This is
|
|
6631
|
-
*
|
|
6840
|
+
* This is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.
|
|
6841
|
+
* Usage:
|
|
6842
|
+
* To start the call with Assistant as entrypoint, use assistant or assistantId
|
|
6843
|
+
* To start the call with Squad as entrypoint, use squad or squadId
|
|
6844
|
+
* To start the call with Workflow as entrypoint, use workflow or workflowId
|
|
6632
6845
|
*/
|
|
6633
|
-
|
|
6846
|
+
workflow?: CreateWorkflowDTO;
|
|
6847
|
+
}
|
|
6848
|
+
export interface UpdateCallDTO {
|
|
6634
6849
|
/**
|
|
6635
|
-
* This is the
|
|
6636
|
-
* @
|
|
6850
|
+
* This is the name of the call. This is just for your own reference.
|
|
6851
|
+
* @maxLength 40
|
|
6637
6852
|
*/
|
|
6638
|
-
|
|
6853
|
+
name?: string;
|
|
6854
|
+
}
|
|
6855
|
+
export type ChatServiceResponse = object;
|
|
6856
|
+
export interface ChatCompletionMessageMetadata {
|
|
6857
|
+
taskName: string;
|
|
6858
|
+
taskType: string;
|
|
6859
|
+
taskOutput: string;
|
|
6860
|
+
taskState?: object;
|
|
6861
|
+
nodeTrace?: string[];
|
|
6862
|
+
}
|
|
6863
|
+
export interface ChatCompletionMessageWorkflows {
|
|
6864
|
+
role: object;
|
|
6865
|
+
content: string | null;
|
|
6866
|
+
metadata?: ChatCompletionMessageMetadata;
|
|
6867
|
+
}
|
|
6868
|
+
export interface ChatCompletionsDTO {
|
|
6869
|
+
messages: ChatCompletionMessageWorkflows[];
|
|
6870
|
+
workflowId?: string;
|
|
6871
|
+
workflow?: CreateWorkflowDTO;
|
|
6639
6872
|
}
|
|
6640
6873
|
export interface AssistantPaginatedResponse {
|
|
6641
6874
|
results: Assistant[];
|
|
6642
6875
|
metadata: PaginationMeta;
|
|
6643
6876
|
}
|
|
6877
|
+
export interface AssistantVersionPaginatedResponse {
|
|
6878
|
+
results: any[];
|
|
6879
|
+
metadata: PaginationMeta;
|
|
6880
|
+
nextPageState?: string;
|
|
6881
|
+
}
|
|
6644
6882
|
export interface UpdateAssistantDTO {
|
|
6645
6883
|
/** These are the options for the assistant's transcriber. */
|
|
6646
6884
|
transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber | GoogleTranscriber | OpenAITranscriber;
|
|
@@ -6677,17 +6915,9 @@ export interface UpdateAssistantDTO {
|
|
|
6677
6915
|
* This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
|
|
6678
6916
|
* You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
|
|
6679
6917
|
*/
|
|
6680
|
-
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
|
|
6681
|
-
|
|
6682
|
-
|
|
6683
|
-
* @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
|
|
6684
|
-
*/
|
|
6685
|
-
clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
|
|
6686
|
-
/**
|
|
6687
|
-
* These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
|
|
6688
|
-
* @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
|
|
6689
|
-
*/
|
|
6690
|
-
serverMessages?: 'conversation-update' | 'end-of-call-report' | 'function-call' | 'hang' | 'language-changed' | 'language-change-detected' | 'model-output' | 'phone-call-control' | 'speech-update' | 'status-update' | 'transcript' | "transcript[transcriptType='final']" | 'tool-calls' | 'transfer-destination-request' | 'transfer-update' | 'user-interrupted' | 'voice-input';
|
|
6918
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
6919
|
+
clientMessages: object[][];
|
|
6920
|
+
serverMessages: object[][];
|
|
6691
6921
|
/**
|
|
6692
6922
|
* How many seconds of silence to wait before ending the call. Defaults to 30.
|
|
6693
6923
|
*
|
|
@@ -6833,6 +7063,8 @@ export interface UpdateAssistantDTO {
|
|
|
6833
7063
|
} & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
|
|
6834
7064
|
provider: 'slack.oauth2-authorization';
|
|
6835
7065
|
} & CreateSlackOAuth2AuthorizationCredentialDTO))[];
|
|
7066
|
+
/** This is a set of actions that will be performed on certain events. */
|
|
7067
|
+
hooks?: AssistantHookCallEnding[];
|
|
6836
7068
|
/**
|
|
6837
7069
|
* This is the name of the assistant.
|
|
6838
7070
|
*
|
|
@@ -6915,8 +7147,6 @@ export interface UpdateAssistantDTO {
|
|
|
6915
7147
|
* 3. org.serverUrl
|
|
6916
7148
|
*/
|
|
6917
7149
|
server?: Server;
|
|
6918
|
-
/** This is a set of actions that will be performed on certain events. */
|
|
6919
|
-
hooks?: AssistantHooks[];
|
|
6920
7150
|
keypadInputPlan?: KeypadInputPlan;
|
|
6921
7151
|
}
|
|
6922
7152
|
export interface ByoPhoneNumber {
|
|
@@ -6970,13 +7200,19 @@ export interface ByoPhoneNumber {
|
|
|
6970
7200
|
/**
|
|
6971
7201
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
6972
7202
|
*
|
|
6973
|
-
* If neither `assistantId` nor `
|
|
7203
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
6974
7204
|
*/
|
|
6975
7205
|
assistantId?: string;
|
|
7206
|
+
/**
|
|
7207
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7208
|
+
*
|
|
7209
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7210
|
+
*/
|
|
7211
|
+
workflowId?: string;
|
|
6976
7212
|
/**
|
|
6977
7213
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
6978
7214
|
*
|
|
6979
|
-
* If neither `assistantId` nor `
|
|
7215
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
6980
7216
|
*/
|
|
6981
7217
|
squadId?: string;
|
|
6982
7218
|
/**
|
|
@@ -7016,6 +7252,16 @@ export interface TwilioPhoneNumber {
|
|
|
7016
7252
|
hooks?: PhoneNumberHookCallRinging[];
|
|
7017
7253
|
/** This is to use numbers bought on Twilio. */
|
|
7018
7254
|
provider: 'twilio';
|
|
7255
|
+
/**
|
|
7256
|
+
* Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.
|
|
7257
|
+
*
|
|
7258
|
+
* If set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.
|
|
7259
|
+
* If `true` or omitted (default), Vapi will configure both the voice and messaging URLs.
|
|
7260
|
+
*
|
|
7261
|
+
* @default true
|
|
7262
|
+
* @default true
|
|
7263
|
+
*/
|
|
7264
|
+
smsEnabled?: boolean;
|
|
7019
7265
|
/** This is the unique identifier for the phone number. */
|
|
7020
7266
|
id: string;
|
|
7021
7267
|
/** This is the unique identifier for the org that this phone number belongs to. */
|
|
@@ -7032,6 +7278,12 @@ export interface TwilioPhoneNumber {
|
|
|
7032
7278
|
updatedAt: string;
|
|
7033
7279
|
/** This is the status of the phone number. */
|
|
7034
7280
|
status?: 'active' | 'activating' | 'blocked';
|
|
7281
|
+
/** This is the Twilio Auth Token for the phone number. */
|
|
7282
|
+
twilioAuthToken?: string;
|
|
7283
|
+
/** This is the Twilio API Key for the phone number. */
|
|
7284
|
+
twilioApiKey?: string;
|
|
7285
|
+
/** This is the Twilio API Secret for the phone number. */
|
|
7286
|
+
twilioApiSecret?: string;
|
|
7035
7287
|
/**
|
|
7036
7288
|
* This is the name of the phone number. This is just for your own reference.
|
|
7037
7289
|
* @maxLength 40
|
|
@@ -7040,13 +7292,19 @@ export interface TwilioPhoneNumber {
|
|
|
7040
7292
|
/**
|
|
7041
7293
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7042
7294
|
*
|
|
7043
|
-
* If neither `assistantId` nor `
|
|
7295
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7044
7296
|
*/
|
|
7045
7297
|
assistantId?: string;
|
|
7298
|
+
/**
|
|
7299
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7300
|
+
*
|
|
7301
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7302
|
+
*/
|
|
7303
|
+
workflowId?: string;
|
|
7046
7304
|
/**
|
|
7047
7305
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7048
7306
|
*
|
|
7049
|
-
* If neither `assistantId` nor `
|
|
7307
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7050
7308
|
*/
|
|
7051
7309
|
squadId?: string;
|
|
7052
7310
|
/**
|
|
@@ -7063,8 +7321,6 @@ export interface TwilioPhoneNumber {
|
|
|
7063
7321
|
number: string;
|
|
7064
7322
|
/** This is the Twilio Account SID for the phone number. */
|
|
7065
7323
|
twilioAccountSid: string;
|
|
7066
|
-
/** This is the Twilio Auth Token for the phone number. */
|
|
7067
|
-
twilioAuthToken: string;
|
|
7068
7324
|
}
|
|
7069
7325
|
export interface VonagePhoneNumber {
|
|
7070
7326
|
/**
|
|
@@ -7104,13 +7360,19 @@ export interface VonagePhoneNumber {
|
|
|
7104
7360
|
/**
|
|
7105
7361
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7106
7362
|
*
|
|
7107
|
-
* If neither `assistantId` nor `
|
|
7363
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7108
7364
|
*/
|
|
7109
7365
|
assistantId?: string;
|
|
7366
|
+
/**
|
|
7367
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7368
|
+
*
|
|
7369
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7370
|
+
*/
|
|
7371
|
+
workflowId?: string;
|
|
7110
7372
|
/**
|
|
7111
7373
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7112
7374
|
*
|
|
7113
|
-
* If neither `assistantId` nor `
|
|
7375
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7114
7376
|
*/
|
|
7115
7377
|
squadId?: string;
|
|
7116
7378
|
/**
|
|
@@ -7184,13 +7446,19 @@ export interface VapiPhoneNumber {
|
|
|
7184
7446
|
/**
|
|
7185
7447
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7186
7448
|
*
|
|
7187
|
-
* If neither `assistantId` nor `
|
|
7449
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7188
7450
|
*/
|
|
7189
7451
|
assistantId?: string;
|
|
7452
|
+
/**
|
|
7453
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7454
|
+
*
|
|
7455
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7456
|
+
*/
|
|
7457
|
+
workflowId?: string;
|
|
7190
7458
|
/**
|
|
7191
7459
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7192
7460
|
*
|
|
7193
|
-
* If neither `assistantId` nor `
|
|
7461
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7194
7462
|
*/
|
|
7195
7463
|
squadId?: string;
|
|
7196
7464
|
/**
|
|
@@ -7260,13 +7528,19 @@ export interface TelnyxPhoneNumber {
|
|
|
7260
7528
|
/**
|
|
7261
7529
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7262
7530
|
*
|
|
7263
|
-
* If neither `assistantId` nor `
|
|
7531
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7264
7532
|
*/
|
|
7265
7533
|
assistantId?: string;
|
|
7534
|
+
/**
|
|
7535
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7536
|
+
*
|
|
7537
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7538
|
+
*/
|
|
7539
|
+
workflowId?: string;
|
|
7266
7540
|
/**
|
|
7267
7541
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7268
7542
|
*
|
|
7269
|
-
* If neither `assistantId` nor `
|
|
7543
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7270
7544
|
*/
|
|
7271
7545
|
squadId?: string;
|
|
7272
7546
|
/**
|
|
@@ -7331,13 +7605,19 @@ export interface CreateByoPhoneNumberDTO {
|
|
|
7331
7605
|
/**
|
|
7332
7606
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7333
7607
|
*
|
|
7334
|
-
* If neither `assistantId` nor `
|
|
7608
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7335
7609
|
*/
|
|
7336
7610
|
assistantId?: string;
|
|
7611
|
+
/**
|
|
7612
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7613
|
+
*
|
|
7614
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7615
|
+
*/
|
|
7616
|
+
workflowId?: string;
|
|
7337
7617
|
/**
|
|
7338
7618
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7339
7619
|
*
|
|
7340
|
-
* If neither `assistantId` nor `
|
|
7620
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7341
7621
|
*/
|
|
7342
7622
|
squadId?: string;
|
|
7343
7623
|
/**
|
|
@@ -7365,12 +7645,26 @@ export interface CreateTwilioPhoneNumberDTO {
|
|
|
7365
7645
|
hooks?: PhoneNumberHookCallRinging[];
|
|
7366
7646
|
/** This is to use numbers bought on Twilio. */
|
|
7367
7647
|
provider: 'twilio';
|
|
7648
|
+
/**
|
|
7649
|
+
* Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.
|
|
7650
|
+
*
|
|
7651
|
+
* If set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.
|
|
7652
|
+
* If `true` or omitted (default), Vapi will configure both the voice and messaging URLs.
|
|
7653
|
+
*
|
|
7654
|
+
* @default true
|
|
7655
|
+
* @default true
|
|
7656
|
+
*/
|
|
7657
|
+
smsEnabled?: boolean;
|
|
7368
7658
|
/** These are the digits of the phone number you own on your Twilio. */
|
|
7369
7659
|
number: string;
|
|
7370
7660
|
/** This is the Twilio Account SID for the phone number. */
|
|
7371
7661
|
twilioAccountSid: string;
|
|
7372
7662
|
/** This is the Twilio Auth Token for the phone number. */
|
|
7373
|
-
twilioAuthToken
|
|
7663
|
+
twilioAuthToken?: string;
|
|
7664
|
+
/** This is the Twilio API Key for the phone number. */
|
|
7665
|
+
twilioApiKey?: string;
|
|
7666
|
+
/** This is the Twilio API Secret for the phone number. */
|
|
7667
|
+
twilioApiSecret?: string;
|
|
7374
7668
|
/**
|
|
7375
7669
|
* This is the name of the phone number. This is just for your own reference.
|
|
7376
7670
|
* @maxLength 40
|
|
@@ -7379,13 +7673,19 @@ export interface CreateTwilioPhoneNumberDTO {
|
|
|
7379
7673
|
/**
|
|
7380
7674
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7381
7675
|
*
|
|
7382
|
-
* If neither `assistantId` nor `
|
|
7676
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7383
7677
|
*/
|
|
7384
7678
|
assistantId?: string;
|
|
7679
|
+
/**
|
|
7680
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7681
|
+
*
|
|
7682
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7683
|
+
*/
|
|
7684
|
+
workflowId?: string;
|
|
7385
7685
|
/**
|
|
7386
7686
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7387
7687
|
*
|
|
7388
|
-
* If neither `assistantId` nor `
|
|
7688
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7389
7689
|
*/
|
|
7390
7690
|
squadId?: string;
|
|
7391
7691
|
/**
|
|
@@ -7425,13 +7725,19 @@ export interface CreateVonagePhoneNumberDTO {
|
|
|
7425
7725
|
/**
|
|
7426
7726
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7427
7727
|
*
|
|
7428
|
-
* If neither `assistantId` nor `
|
|
7728
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7429
7729
|
*/
|
|
7430
7730
|
assistantId?: string;
|
|
7731
|
+
/**
|
|
7732
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7733
|
+
*
|
|
7734
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7735
|
+
*/
|
|
7736
|
+
workflowId?: string;
|
|
7431
7737
|
/**
|
|
7432
7738
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7433
7739
|
*
|
|
7434
|
-
* If neither `assistantId` nor `
|
|
7740
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7435
7741
|
*/
|
|
7436
7742
|
squadId?: string;
|
|
7437
7743
|
/**
|
|
@@ -7485,13 +7791,19 @@ export interface CreateVapiPhoneNumberDTO {
|
|
|
7485
7791
|
/**
|
|
7486
7792
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7487
7793
|
*
|
|
7488
|
-
* If neither `assistantId` nor `
|
|
7794
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7489
7795
|
*/
|
|
7490
7796
|
assistantId?: string;
|
|
7797
|
+
/**
|
|
7798
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7799
|
+
*
|
|
7800
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7801
|
+
*/
|
|
7802
|
+
workflowId?: string;
|
|
7491
7803
|
/**
|
|
7492
7804
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7493
7805
|
*
|
|
7494
|
-
* If neither `assistantId` nor `
|
|
7806
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7495
7807
|
*/
|
|
7496
7808
|
squadId?: string;
|
|
7497
7809
|
/**
|
|
@@ -7531,13 +7843,19 @@ export interface CreateTelnyxPhoneNumberDTO {
|
|
|
7531
7843
|
/**
|
|
7532
7844
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7533
7845
|
*
|
|
7534
|
-
* If neither `assistantId` nor `
|
|
7846
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7535
7847
|
*/
|
|
7536
7848
|
assistantId?: string;
|
|
7849
|
+
/**
|
|
7850
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7851
|
+
*
|
|
7852
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7853
|
+
*/
|
|
7854
|
+
workflowId?: string;
|
|
7537
7855
|
/**
|
|
7538
7856
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7539
7857
|
*
|
|
7540
|
-
* If neither `assistantId` nor `
|
|
7858
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7541
7859
|
*/
|
|
7542
7860
|
squadId?: string;
|
|
7543
7861
|
/**
|
|
@@ -7584,13 +7902,19 @@ export interface UpdateByoPhoneNumberDTO {
|
|
|
7584
7902
|
/**
|
|
7585
7903
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7586
7904
|
*
|
|
7587
|
-
* If neither `assistantId` nor `
|
|
7905
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7588
7906
|
*/
|
|
7589
7907
|
assistantId?: string;
|
|
7908
|
+
/**
|
|
7909
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7910
|
+
*
|
|
7911
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7912
|
+
*/
|
|
7913
|
+
workflowId?: string;
|
|
7590
7914
|
/**
|
|
7591
7915
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7592
7916
|
*
|
|
7593
|
-
* If neither `assistantId` nor `
|
|
7917
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7594
7918
|
*/
|
|
7595
7919
|
squadId?: string;
|
|
7596
7920
|
/**
|
|
@@ -7628,6 +7952,16 @@ export interface UpdateTwilioPhoneNumberDTO {
|
|
|
7628
7952
|
fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
|
|
7629
7953
|
/** This is the hooks that will be used for incoming calls to this phone number. */
|
|
7630
7954
|
hooks?: PhoneNumberHookCallRinging[];
|
|
7955
|
+
/**
|
|
7956
|
+
* Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.
|
|
7957
|
+
*
|
|
7958
|
+
* If set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.
|
|
7959
|
+
* If `true` or omitted (default), Vapi will configure both the voice and messaging URLs.
|
|
7960
|
+
*
|
|
7961
|
+
* @default true
|
|
7962
|
+
* @default true
|
|
7963
|
+
*/
|
|
7964
|
+
smsEnabled?: boolean;
|
|
7631
7965
|
/**
|
|
7632
7966
|
* This is the name of the phone number. This is just for your own reference.
|
|
7633
7967
|
* @maxLength 40
|
|
@@ -7636,13 +7970,19 @@ export interface UpdateTwilioPhoneNumberDTO {
|
|
|
7636
7970
|
/**
|
|
7637
7971
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7638
7972
|
*
|
|
7639
|
-
* If neither `assistantId` nor `
|
|
7973
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7640
7974
|
*/
|
|
7641
7975
|
assistantId?: string;
|
|
7976
|
+
/**
|
|
7977
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
7978
|
+
*
|
|
7979
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7980
|
+
*/
|
|
7981
|
+
workflowId?: string;
|
|
7642
7982
|
/**
|
|
7643
7983
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7644
7984
|
*
|
|
7645
|
-
* If neither `assistantId` nor `
|
|
7985
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7646
7986
|
*/
|
|
7647
7987
|
squadId?: string;
|
|
7648
7988
|
/**
|
|
@@ -7661,6 +8001,10 @@ export interface UpdateTwilioPhoneNumberDTO {
|
|
|
7661
8001
|
twilioAccountSid?: string;
|
|
7662
8002
|
/** This is the Twilio Auth Token for the phone number. */
|
|
7663
8003
|
twilioAuthToken?: string;
|
|
8004
|
+
/** This is the Twilio API Key for the phone number. */
|
|
8005
|
+
twilioApiKey?: string;
|
|
8006
|
+
/** This is the Twilio API Secret for the phone number. */
|
|
8007
|
+
twilioApiSecret?: string;
|
|
7664
8008
|
}
|
|
7665
8009
|
export interface UpdateVonagePhoneNumberDTO {
|
|
7666
8010
|
/**
|
|
@@ -7682,13 +8026,19 @@ export interface UpdateVonagePhoneNumberDTO {
|
|
|
7682
8026
|
/**
|
|
7683
8027
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7684
8028
|
*
|
|
7685
|
-
* If neither `assistantId` nor `
|
|
8029
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7686
8030
|
*/
|
|
7687
8031
|
assistantId?: string;
|
|
8032
|
+
/**
|
|
8033
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
8034
|
+
*
|
|
8035
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
8036
|
+
*/
|
|
8037
|
+
workflowId?: string;
|
|
7688
8038
|
/**
|
|
7689
8039
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7690
8040
|
*
|
|
7691
|
-
* If neither `assistantId` nor `
|
|
8041
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7692
8042
|
*/
|
|
7693
8043
|
squadId?: string;
|
|
7694
8044
|
/**
|
|
@@ -7726,13 +8076,19 @@ export interface UpdateVapiPhoneNumberDTO {
|
|
|
7726
8076
|
/**
|
|
7727
8077
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7728
8078
|
*
|
|
7729
|
-
* If neither `assistantId` nor `
|
|
8079
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7730
8080
|
*/
|
|
7731
8081
|
assistantId?: string;
|
|
8082
|
+
/**
|
|
8083
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
8084
|
+
*
|
|
8085
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
8086
|
+
*/
|
|
8087
|
+
workflowId?: string;
|
|
7732
8088
|
/**
|
|
7733
8089
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7734
8090
|
*
|
|
7735
|
-
* If neither `assistantId` nor `
|
|
8091
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7736
8092
|
*/
|
|
7737
8093
|
squadId?: string;
|
|
7738
8094
|
/**
|
|
@@ -7778,13 +8134,19 @@ export interface UpdateTelnyxPhoneNumberDTO {
|
|
|
7778
8134
|
/**
|
|
7779
8135
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7780
8136
|
*
|
|
7781
|
-
* If neither `assistantId` nor `
|
|
8137
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7782
8138
|
*/
|
|
7783
8139
|
assistantId?: string;
|
|
8140
|
+
/**
|
|
8141
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
8142
|
+
*
|
|
8143
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
8144
|
+
*/
|
|
8145
|
+
workflowId?: string;
|
|
7784
8146
|
/**
|
|
7785
8147
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7786
8148
|
*
|
|
7787
|
-
* If neither `assistantId` nor `
|
|
8149
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7788
8150
|
*/
|
|
7789
8151
|
squadId?: string;
|
|
7790
8152
|
/**
|
|
@@ -7829,13 +8191,19 @@ export interface ImportVonagePhoneNumberDTO {
|
|
|
7829
8191
|
/**
|
|
7830
8192
|
* This is the assistant that will be used for incoming calls to this phone number.
|
|
7831
8193
|
*
|
|
7832
|
-
* If neither `assistantId` nor `
|
|
8194
|
+
* If neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7833
8195
|
*/
|
|
7834
8196
|
assistantId?: string;
|
|
8197
|
+
/**
|
|
8198
|
+
* This is the workflow that will be used for incoming calls to this phone number.
|
|
8199
|
+
*
|
|
8200
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
8201
|
+
*/
|
|
8202
|
+
workflowId?: string;
|
|
7835
8203
|
/**
|
|
7836
8204
|
* This is the squad that will be used for incoming calls to this phone number.
|
|
7837
8205
|
*
|
|
7838
|
-
* If neither `assistantId` nor `
|
|
8206
|
+
* If neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
|
|
7839
8207
|
*/
|
|
7840
8208
|
squadId?: string;
|
|
7841
8209
|
/**
|
|
@@ -9866,8 +10234,22 @@ export interface TrieveKnowledgeBaseImport {
|
|
|
9866
10234
|
/** This is the `datasetId` of the dataset on your Trieve account. */
|
|
9867
10235
|
providerId: string;
|
|
9868
10236
|
}
|
|
10237
|
+
export interface Workflow {
|
|
10238
|
+
nodes: (Start | Assistant | Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
10239
|
+
/** These are the options for the workflow's LLM. */
|
|
10240
|
+
model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
|
|
10241
|
+
id: string;
|
|
10242
|
+
orgId: string;
|
|
10243
|
+
/** @format date-time */
|
|
10244
|
+
createdAt: string;
|
|
10245
|
+
/** @format date-time */
|
|
10246
|
+
updatedAt: string;
|
|
10247
|
+
/** @maxLength 80 */
|
|
10248
|
+
name: string;
|
|
10249
|
+
edges: Edge[];
|
|
10250
|
+
}
|
|
9869
10251
|
export interface UpdateWorkflowDTO {
|
|
9870
|
-
nodes?: (Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
10252
|
+
nodes?: (Start | Assistant | Say | Gather | ApiRequest | Hangup | Transfer)[];
|
|
9871
10253
|
/** These are the options for the workflow's LLM. */
|
|
9872
10254
|
model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
|
|
9873
10255
|
/** @maxLength 80 */
|
|
@@ -10240,7 +10622,7 @@ export interface TestSuiteTestScorerAI {
|
|
|
10240
10622
|
type: 'ai';
|
|
10241
10623
|
/**
|
|
10242
10624
|
* This is the rubric used by the AI scorer.
|
|
10243
|
-
* @maxLength
|
|
10625
|
+
* @maxLength 10000
|
|
10244
10626
|
*/
|
|
10245
10627
|
rubric: string;
|
|
10246
10628
|
}
|
|
@@ -10268,7 +10650,7 @@ export interface TestSuiteRunScorerAI {
|
|
|
10268
10650
|
reasoning: string;
|
|
10269
10651
|
/**
|
|
10270
10652
|
* This is the rubric used by the AI scorer.
|
|
10271
|
-
* @maxLength
|
|
10653
|
+
* @maxLength 10000
|
|
10272
10654
|
*/
|
|
10273
10655
|
rubric: string;
|
|
10274
10656
|
}
|
|
@@ -10751,6 +11133,8 @@ export interface Org {
|
|
|
10751
11133
|
stripeSubscriptionStatus?: string;
|
|
10752
11134
|
/** This is the plan for the org. */
|
|
10753
11135
|
plan?: OrgPlan;
|
|
11136
|
+
/** This is the secret key used for signing JWT tokens for the org. */
|
|
11137
|
+
jwtSecret?: string;
|
|
10754
11138
|
/**
|
|
10755
11139
|
* This is the name of the org. This is just for your own reference.
|
|
10756
11140
|
* @maxLength 40
|
|
@@ -10867,6 +11251,10 @@ export interface UpdateUserRoleDTO {
|
|
|
10867
11251
|
userId: string;
|
|
10868
11252
|
role: 'admin' | 'editor' | 'viewer';
|
|
10869
11253
|
}
|
|
11254
|
+
export interface JwtResponse {
|
|
11255
|
+
accessToken: string;
|
|
11256
|
+
aud: object;
|
|
11257
|
+
}
|
|
10870
11258
|
export interface TokenRestrictions {
|
|
10871
11259
|
/** This determines whether the token is enabled or disabled. Default is true, it's enabled. */
|
|
10872
11260
|
enabled?: boolean;
|
|
@@ -12039,7 +12427,11 @@ export interface TrieveCredential {
|
|
|
12039
12427
|
export interface TwilioCredential {
|
|
12040
12428
|
provider: 'twilio';
|
|
12041
12429
|
/** This is not returned in the API. */
|
|
12042
|
-
authToken
|
|
12430
|
+
authToken?: string;
|
|
12431
|
+
/** This is not returned in the API. */
|
|
12432
|
+
apiKey?: string;
|
|
12433
|
+
/** This is not returned in the API. */
|
|
12434
|
+
apiSecret?: string;
|
|
12043
12435
|
/** This is the unique identifier for the credential. */
|
|
12044
12436
|
id: string;
|
|
12045
12437
|
/** This is the unique identifier for the org that this credential belongs to. */
|
|
@@ -12856,6 +13248,10 @@ export interface UpdateTrieveCredentialDTO {
|
|
|
12856
13248
|
export interface UpdateTwilioCredentialDTO {
|
|
12857
13249
|
/** This is not returned in the API. */
|
|
12858
13250
|
authToken?: string;
|
|
13251
|
+
/** This is not returned in the API. */
|
|
13252
|
+
apiKey?: string;
|
|
13253
|
+
/** This is not returned in the API. */
|
|
13254
|
+
apiSecret?: string;
|
|
12859
13255
|
/**
|
|
12860
13256
|
* This is the name of credential. This is just for your reference.
|
|
12861
13257
|
* @minLength 1
|
|
@@ -13395,7 +13791,7 @@ export interface ServerMessageEndOfCallReport {
|
|
|
13395
13791
|
/** This is the type of the message. "end-of-call-report" is sent when the call ends and post-processing is complete. */
|
|
13396
13792
|
type: 'end-of-call-report';
|
|
13397
13793
|
/** This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id. */
|
|
13398
|
-
endedReason: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
|
|
13794
|
+
endedReason: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-providerfault-transport-never-connected' | 'call.in-progress.error-vapifault-worker-not-available' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'call.forwarding.operator-busy' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
|
|
13399
13795
|
/** This is the cost of the call in USD. This can also be found at `call.cost` on GET /call/:id. */
|
|
13400
13796
|
cost?: number;
|
|
13401
13797
|
/** These are the costs of individual components of the call in USD. This can also be found at `call.costs` on GET /call/:id. */
|
|
@@ -13725,7 +14121,7 @@ export interface ServerMessageStatusUpdate {
|
|
|
13725
14121
|
/** This is the status of the call. */
|
|
13726
14122
|
status: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
|
|
13727
14123
|
/** This is the reason the call ended. This is only sent if the status is "ended". */
|
|
13728
|
-
endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
|
|
14124
|
+
endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-providerfault-transport-never-connected' | 'call.in-progress.error-vapifault-worker-not-available' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'call.forwarding.operator-busy' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
|
|
13729
14125
|
/** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
|
|
13730
14126
|
messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
|
|
13731
14127
|
/** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
|
|
@@ -14300,6 +14696,8 @@ export interface ToolCallResult {
|
|
|
14300
14696
|
* 3. a response generated by the model, if neither exist
|
|
14301
14697
|
*/
|
|
14302
14698
|
error?: string;
|
|
14699
|
+
/** This is optional metadata for the tool call result to be sent to the client. */
|
|
14700
|
+
metadata?: object;
|
|
14303
14701
|
}
|
|
14304
14702
|
export interface ServerMessageResponseToolCalls {
|
|
14305
14703
|
/** These are the results of the "tool-calls" message. */
|
|
@@ -14467,6 +14865,8 @@ export interface ToolCallResultMessage {
|
|
|
14467
14865
|
time: number;
|
|
14468
14866
|
/** The number of seconds from the start of the conversation. */
|
|
14469
14867
|
secondsFromStart: number;
|
|
14868
|
+
/** The metadata for the tool call result. */
|
|
14869
|
+
metadata?: object;
|
|
14470
14870
|
}
|
|
14471
14871
|
export interface TransportCost {
|
|
14472
14872
|
/** This is the type of cost, always 'transport' for this class. */
|
|
@@ -14569,7 +14969,7 @@ export interface VoicemailDetectionCost {
|
|
|
14569
14969
|
/** This is the model that was used to perform the analysis. */
|
|
14570
14970
|
model: object;
|
|
14571
14971
|
/** This is the provider that was used to detect the voicemail. */
|
|
14572
|
-
provider: 'twilio' | 'google' | 'openai';
|
|
14972
|
+
provider: 'twilio' | 'google' | 'openai' | 'vapi';
|
|
14573
14973
|
/** This is the number of prompt text tokens used in the voicemail detection. */
|
|
14574
14974
|
promptTextTokens: number;
|
|
14575
14975
|
/** This is the number of prompt audio tokens used in the voicemail detection. */
|
|
@@ -14581,6 +14981,18 @@ export interface VoicemailDetectionCost {
|
|
|
14581
14981
|
/** This is the cost of the component in USD. */
|
|
14582
14982
|
cost: number;
|
|
14583
14983
|
}
|
|
14984
|
+
export interface KnowledgeBaseCost {
|
|
14985
|
+
/** This is the type of cost, always 'knowledge-base' for this class. */
|
|
14986
|
+
type: 'knowledge-base';
|
|
14987
|
+
/** This is the model that was used for processing the knowledge base. */
|
|
14988
|
+
model: object;
|
|
14989
|
+
/** This is the number of prompt tokens used in the knowledge base query. */
|
|
14990
|
+
promptTokens: number;
|
|
14991
|
+
/** This is the number of completion tokens generated in the knowledge base query. */
|
|
14992
|
+
completionTokens: number;
|
|
14993
|
+
/** This is the cost of the component in USD. */
|
|
14994
|
+
cost: number;
|
|
14995
|
+
}
|
|
14584
14996
|
export interface FunctionToolWithToolCall {
|
|
14585
14997
|
/**
|
|
14586
14998
|
* This determines if the tool is async.
|
|
@@ -15540,6 +15952,20 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
15540
15952
|
* @secure
|
|
15541
15953
|
*/
|
|
15542
15954
|
assistantControllerRemove: (id: string, params?: RequestParams) => Promise<HttpResponse<Assistant, any>>;
|
|
15955
|
+
/**
|
|
15956
|
+
* No description
|
|
15957
|
+
*
|
|
15958
|
+
* @tags Assistants
|
|
15959
|
+
* @name AssistantControllerFindVersions
|
|
15960
|
+
* @summary List Assistant Versions
|
|
15961
|
+
* @request GET:/assistant/{id}/version
|
|
15962
|
+
* @secure
|
|
15963
|
+
*/
|
|
15964
|
+
assistantControllerFindVersions: (id: string, query?: {
|
|
15965
|
+
page?: number;
|
|
15966
|
+
limit?: number;
|
|
15967
|
+
pageState?: string;
|
|
15968
|
+
}, params?: RequestParams) => Promise<HttpResponse<AssistantVersionPaginatedResponse, any>>;
|
|
15543
15969
|
};
|
|
15544
15970
|
phoneNumber: {
|
|
15545
15971
|
/**
|
|
@@ -17097,6 +17523,16 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
17097
17523
|
* @secure
|
|
17098
17524
|
*/
|
|
17099
17525
|
orgControllerUserUpdate: (id: string, data: UpdateUserRoleDTO, params?: RequestParams) => Promise<HttpResponse<void, any>>;
|
|
17526
|
+
/**
|
|
17527
|
+
* No description
|
|
17528
|
+
*
|
|
17529
|
+
* @tags Orgs
|
|
17530
|
+
* @name OrgControllerOrgToken
|
|
17531
|
+
* @summary Generate User Org JWT
|
|
17532
|
+
* @request GET:/org/{id}/auth
|
|
17533
|
+
* @secure
|
|
17534
|
+
*/
|
|
17535
|
+
orgControllerOrgToken: (id: string, params?: RequestParams) => Promise<HttpResponse<JwtResponse, any>>;
|
|
17100
17536
|
};
|
|
17101
17537
|
token: {
|
|
17102
17538
|
/**
|