@vapi-ai/web 2.3.10 → 2.5.0
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 +2293 -504
- package/dist/api.d.ts +1515 -212
- package/dist/api.js +156 -2
- package/dist/vapi.d.ts +71 -3
- package/dist/vapi.js +403 -10
- package/package.json +4 -3
- package/vapi.ts +491 -10
package/dist/api.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface AssemblyAITranscriber {
|
|
|
24
24
|
formatTurns?: boolean;
|
|
25
25
|
/**
|
|
26
26
|
* This is the end of turn confidence threshold. The minimum confidence that the end of turn is detected.
|
|
27
|
-
*
|
|
27
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
28
28
|
* @min 0
|
|
29
29
|
* @max 1
|
|
30
30
|
* @default 0.7
|
|
@@ -35,7 +35,7 @@ export interface AssemblyAITranscriber {
|
|
|
35
35
|
endOfTurnConfidenceThreshold?: number;
|
|
36
36
|
/**
|
|
37
37
|
* This is the minimum end of turn silence when confident in milliseconds.
|
|
38
|
-
*
|
|
38
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
39
39
|
* @default 160
|
|
40
40
|
* @min 0
|
|
41
41
|
* @example 160
|
|
@@ -43,7 +43,7 @@ export interface AssemblyAITranscriber {
|
|
|
43
43
|
minEndOfTurnSilenceWhenConfident?: number;
|
|
44
44
|
/**
|
|
45
45
|
* This is the maximum wait time for word finalization in milliseconds.
|
|
46
|
-
*
|
|
46
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
47
47
|
* @default 160
|
|
48
48
|
* @min 0
|
|
49
49
|
* @example 160
|
|
@@ -51,7 +51,7 @@ export interface AssemblyAITranscriber {
|
|
|
51
51
|
wordFinalizationMaxWaitTime?: number;
|
|
52
52
|
/**
|
|
53
53
|
* This is the maximum turn silence time in milliseconds.
|
|
54
|
-
*
|
|
54
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
55
55
|
* @default 400
|
|
56
56
|
* @min 0
|
|
57
57
|
* @example 400
|
|
@@ -214,7 +214,7 @@ export interface DeepgramTranscriber {
|
|
|
214
214
|
/** 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 */
|
|
215
215
|
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;
|
|
216
216
|
/** 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 */
|
|
217
|
-
language?: "ar" | "az" | "ba" | "bg" | "br" | "ca" | "cs" | "da" | "da-DK" | "de" | "de-CH" | "el" | "en" | "en-AU" | "en-CA" | "en-GB" | "en-IE" | "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";
|
|
217
|
+
language?: "ar" | "az" | "ba" | "bg" | "br" | "ca" | "cs" | "da" | "da-DK" | "de" | "de-CH" | "el" | "en" | "en-AU" | "en-CA" | "en-GB" | "en-IE" | "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" | "pt-PT" | "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";
|
|
218
218
|
/**
|
|
219
219
|
* 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.
|
|
220
220
|
* @example false
|
|
@@ -246,6 +246,12 @@ export interface DeepgramTranscriber {
|
|
|
246
246
|
* @example 0.4
|
|
247
247
|
*/
|
|
248
248
|
confidenceThreshold?: number;
|
|
249
|
+
/** @example 0.3 */
|
|
250
|
+
preflightThreshold?: number;
|
|
251
|
+
/** @example 0.7 */
|
|
252
|
+
eotThreshold?: number;
|
|
253
|
+
/** @example 3000 */
|
|
254
|
+
eotTimeoutMs?: number;
|
|
249
255
|
/** These keywords are passed to the transcription model to help it pick up use-case specific words. Anything that may not be a common word, like your company name, should be added here. */
|
|
250
256
|
keywords?: string[];
|
|
251
257
|
/** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
|
|
@@ -344,6 +350,16 @@ export interface GladiaTranscriber {
|
|
|
344
350
|
customVocabularyEnabled?: boolean;
|
|
345
351
|
/** Custom vocabulary configuration */
|
|
346
352
|
customVocabularyConfig?: GladiaCustomVocabularyConfigDTO;
|
|
353
|
+
/**
|
|
354
|
+
* Region for processing audio (us-west or eu-west)
|
|
355
|
+
* @example "us-west"
|
|
356
|
+
*/
|
|
357
|
+
region?: "us-west" | "eu-west";
|
|
358
|
+
/**
|
|
359
|
+
* Enable partial transcripts for low-latency streaming transcription
|
|
360
|
+
* @example false
|
|
361
|
+
*/
|
|
362
|
+
receivePartialTranscripts?: boolean;
|
|
347
363
|
/** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
|
|
348
364
|
fallbackPlan?: FallbackTranscriberPlan;
|
|
349
365
|
}
|
|
@@ -409,7 +425,7 @@ export interface FallbackAssemblyAITranscriber {
|
|
|
409
425
|
formatTurns?: boolean;
|
|
410
426
|
/**
|
|
411
427
|
* This is the end of turn confidence threshold. The minimum confidence that the end of turn is detected.
|
|
412
|
-
*
|
|
428
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
413
429
|
* @min 0
|
|
414
430
|
* @max 1
|
|
415
431
|
* @default 0.7
|
|
@@ -420,7 +436,7 @@ export interface FallbackAssemblyAITranscriber {
|
|
|
420
436
|
endOfTurnConfidenceThreshold?: number;
|
|
421
437
|
/**
|
|
422
438
|
* This is the minimum end of turn silence when confident in milliseconds.
|
|
423
|
-
*
|
|
439
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
424
440
|
* @default 160
|
|
425
441
|
* @min 0
|
|
426
442
|
* @example 160
|
|
@@ -428,7 +444,7 @@ export interface FallbackAssemblyAITranscriber {
|
|
|
428
444
|
minEndOfTurnSilenceWhenConfident?: number;
|
|
429
445
|
/**
|
|
430
446
|
* This is the maximum wait time for word finalization in milliseconds.
|
|
431
|
-
*
|
|
447
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
432
448
|
* @default 160
|
|
433
449
|
* @min 0
|
|
434
450
|
* @example 160
|
|
@@ -436,7 +452,7 @@ export interface FallbackAssemblyAITranscriber {
|
|
|
436
452
|
wordFinalizationMaxWaitTime?: number;
|
|
437
453
|
/**
|
|
438
454
|
* This is the maximum turn silence time in milliseconds.
|
|
439
|
-
*
|
|
455
|
+
* Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
|
|
440
456
|
* @default 400
|
|
441
457
|
* @min 0
|
|
442
458
|
* @example 400
|
|
@@ -530,7 +546,7 @@ export interface FallbackDeepgramTranscriber {
|
|
|
530
546
|
/** 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 */
|
|
531
547
|
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;
|
|
532
548
|
/** 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 */
|
|
533
|
-
language?: "ar" | "az" | "ba" | "bg" | "br" | "ca" | "cs" | "da" | "da-DK" | "de" | "de-CH" | "el" | "en" | "en-AU" | "en-CA" | "en-GB" | "en-IE" | "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";
|
|
549
|
+
language?: "ar" | "az" | "ba" | "bg" | "br" | "ca" | "cs" | "da" | "da-DK" | "de" | "de-CH" | "el" | "en" | "en-AU" | "en-CA" | "en-GB" | "en-IE" | "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" | "pt-PT" | "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";
|
|
534
550
|
/**
|
|
535
551
|
* 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.
|
|
536
552
|
* @example false
|
|
@@ -562,6 +578,12 @@ export interface FallbackDeepgramTranscriber {
|
|
|
562
578
|
* @example 0.4
|
|
563
579
|
*/
|
|
564
580
|
confidenceThreshold?: number;
|
|
581
|
+
/** @example 0.3 */
|
|
582
|
+
preflightThreshold?: number;
|
|
583
|
+
/** @example 0.7 */
|
|
584
|
+
eotThreshold?: number;
|
|
585
|
+
/** @example 3000 */
|
|
586
|
+
eotTimeoutMs?: number;
|
|
565
587
|
/** These keywords are passed to the transcription model to help it pick up use-case specific words. Anything that may not be a common word, like your company name, should be added here. */
|
|
566
588
|
keywords?: string[];
|
|
567
589
|
/** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
|
|
@@ -659,6 +681,16 @@ export interface FallbackGladiaTranscriber {
|
|
|
659
681
|
customVocabularyEnabled?: boolean;
|
|
660
682
|
/** Custom vocabulary configuration */
|
|
661
683
|
customVocabularyConfig?: GladiaCustomVocabularyConfigDTO;
|
|
684
|
+
/**
|
|
685
|
+
* Region for processing audio (us-west or eu-west)
|
|
686
|
+
* @example "us-west"
|
|
687
|
+
*/
|
|
688
|
+
region?: "us-west" | "eu-west";
|
|
689
|
+
/**
|
|
690
|
+
* Enable partial transcripts for low-latency streaming transcription
|
|
691
|
+
* @example false
|
|
692
|
+
*/
|
|
693
|
+
receivePartialTranscripts?: boolean;
|
|
662
694
|
}
|
|
663
695
|
export interface FallbackSpeechmaticsTranscriber {
|
|
664
696
|
/** This is the transcription provider that will be used. */
|
|
@@ -1179,6 +1211,14 @@ export interface CreateVoicemailToolDTO {
|
|
|
1179
1211
|
messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
|
|
1180
1212
|
/** The type of tool. "voicemail" for Voicemail tool. */
|
|
1181
1213
|
type: "voicemail";
|
|
1214
|
+
/**
|
|
1215
|
+
* This is the flag that enables beep detection for voicemail detection and applies only for twilio based calls.
|
|
1216
|
+
*
|
|
1217
|
+
* @default false
|
|
1218
|
+
* @default false
|
|
1219
|
+
* @example false
|
|
1220
|
+
*/
|
|
1221
|
+
beepDetectionEnabled?: boolean;
|
|
1182
1222
|
/**
|
|
1183
1223
|
* This is the plan to reject a tool call based on the conversation state.
|
|
1184
1224
|
*
|
|
@@ -4066,6 +4106,11 @@ export interface CustomLLMModel {
|
|
|
4066
4106
|
headers?: Record<string, string>;
|
|
4067
4107
|
/** These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1 */
|
|
4068
4108
|
url: string;
|
|
4109
|
+
/**
|
|
4110
|
+
* This determines whether the transcriber's word level confidence is sent in requests to the custom provider. Default is false.
|
|
4111
|
+
* This only works for Deepgram transcribers.
|
|
4112
|
+
*/
|
|
4113
|
+
wordLevelConfidenceEnabled?: boolean;
|
|
4069
4114
|
/**
|
|
4070
4115
|
* This sets the timeout for the connection to the custom provider without needing to stream any tokens back. Default is 20 seconds.
|
|
4071
4116
|
* @min 0
|
|
@@ -4313,7 +4358,7 @@ export interface GroqModel {
|
|
|
4313
4358
|
/** These are the options for the knowledge base. */
|
|
4314
4359
|
knowledgeBase?: CreateCustomKnowledgeBaseDTO;
|
|
4315
4360
|
/** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
|
|
4316
|
-
model: "openai/gpt-oss-20b" | "openai/gpt-oss-120b" | "deepseek-r1-distill-llama-70b" | "llama-3.3-70b-versatile" | "llama-3.1-405b-reasoning" | "llama-3.1-8b-instant" | "llama3-8b-8192" | "llama3-70b-8192" | "gemma2-9b-it" | "meta-llama/llama-4-maverick-17b-128e-instruct" | "meta-llama/llama-4-scout-17b-16e-instruct" | "mistral-saba-24b" | "compound-beta" | "compound-beta-mini";
|
|
4361
|
+
model: "openai/gpt-oss-20b" | "openai/gpt-oss-120b" | "deepseek-r1-distill-llama-70b" | "llama-3.3-70b-versatile" | "llama-3.1-405b-reasoning" | "llama-3.1-8b-instant" | "llama3-8b-8192" | "llama3-70b-8192" | "gemma2-9b-it" | "moonshotai/kimi-k2-instruct-0905" | "meta-llama/llama-4-maverick-17b-128e-instruct" | "meta-llama/llama-4-scout-17b-16e-instruct" | "mistral-saba-24b" | "compound-beta" | "compound-beta-mini";
|
|
4317
4362
|
provider: "groq";
|
|
4318
4363
|
/**
|
|
4319
4364
|
* This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
|
|
@@ -4885,6 +4930,186 @@ export interface ToolNode {
|
|
|
4885
4930
|
/** This is for metadata you want to store on the task. */
|
|
4886
4931
|
metadata?: object;
|
|
4887
4932
|
}
|
|
4933
|
+
export interface VoicemailDetectionBackoffPlan {
|
|
4934
|
+
/**
|
|
4935
|
+
* This is the number of seconds to wait before starting the first retry attempt.
|
|
4936
|
+
* @min 0
|
|
4937
|
+
* @default 5
|
|
4938
|
+
*/
|
|
4939
|
+
startAtSeconds?: number;
|
|
4940
|
+
/**
|
|
4941
|
+
* This is the interval in seconds between retry attempts.
|
|
4942
|
+
* @min 2.5
|
|
4943
|
+
* @default 5
|
|
4944
|
+
*/
|
|
4945
|
+
frequencySeconds?: number;
|
|
4946
|
+
/**
|
|
4947
|
+
* This is the maximum number of retry attempts before giving up.
|
|
4948
|
+
* @min 1
|
|
4949
|
+
* @max 10
|
|
4950
|
+
* @default 6
|
|
4951
|
+
*/
|
|
4952
|
+
maxRetries?: number;
|
|
4953
|
+
}
|
|
4954
|
+
export interface GoogleVoicemailDetectionPlan {
|
|
4955
|
+
/**
|
|
4956
|
+
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
4957
|
+
*
|
|
4958
|
+
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
4959
|
+
*
|
|
4960
|
+
* - 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.
|
|
4961
|
+
*
|
|
4962
|
+
* @default 30
|
|
4963
|
+
* @min 0
|
|
4964
|
+
* @max 60
|
|
4965
|
+
* @min 0
|
|
4966
|
+
* @max 30
|
|
4967
|
+
* @default 30
|
|
4968
|
+
*/
|
|
4969
|
+
beepMaxAwaitSeconds?: number;
|
|
4970
|
+
/** This is the provider to use for voicemail detection. */
|
|
4971
|
+
provider: "google";
|
|
4972
|
+
/** This is the backoff plan for the voicemail detection. */
|
|
4973
|
+
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
4974
|
+
/**
|
|
4975
|
+
* This is the detection type to use for voicemail detection.
|
|
4976
|
+
* - 'audio': Uses native audio models (default)
|
|
4977
|
+
* - 'transcript': Uses ASR/transcript-based detection
|
|
4978
|
+
* @default 'audio' (audio detection)
|
|
4979
|
+
*/
|
|
4980
|
+
type?: "audio" | "transcript";
|
|
4981
|
+
}
|
|
4982
|
+
export interface OpenAIVoicemailDetectionPlan {
|
|
4983
|
+
/**
|
|
4984
|
+
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
4985
|
+
*
|
|
4986
|
+
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
4987
|
+
*
|
|
4988
|
+
* - 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.
|
|
4989
|
+
*
|
|
4990
|
+
* @default 30
|
|
4991
|
+
* @min 0
|
|
4992
|
+
* @max 60
|
|
4993
|
+
* @min 0
|
|
4994
|
+
* @max 30
|
|
4995
|
+
* @default 30
|
|
4996
|
+
*/
|
|
4997
|
+
beepMaxAwaitSeconds?: number;
|
|
4998
|
+
/** This is the provider to use for voicemail detection. */
|
|
4999
|
+
provider: "openai";
|
|
5000
|
+
/** This is the backoff plan for the voicemail detection. */
|
|
5001
|
+
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
5002
|
+
/**
|
|
5003
|
+
* This is the detection type to use for voicemail detection.
|
|
5004
|
+
* - 'audio': Uses native audio models (default)
|
|
5005
|
+
* - 'transcript': Uses ASR/transcript-based detection
|
|
5006
|
+
* @default 'audio' (audio detection)
|
|
5007
|
+
*/
|
|
5008
|
+
type?: "audio" | "transcript";
|
|
5009
|
+
}
|
|
5010
|
+
export interface TwilioVoicemailDetectionPlan {
|
|
5011
|
+
/** This is the provider to use for voicemail detection. */
|
|
5012
|
+
provider: "twilio";
|
|
5013
|
+
/**
|
|
5014
|
+
* These are the AMD messages from Twilio that are considered as voicemail. Default is ['machine_end_beep', 'machine_end_silence'].
|
|
5015
|
+
*
|
|
5016
|
+
* @default {Array} ['machine_end_beep', 'machine_end_silence']
|
|
5017
|
+
* @example ["machine_end_beep","machine_end_silence"]
|
|
5018
|
+
*/
|
|
5019
|
+
voicemailDetectionTypes?: "machine_start" | "human" | "fax" | "unknown" | "machine_end_beep" | "machine_end_silence" | "machine_end_other";
|
|
5020
|
+
/**
|
|
5021
|
+
* This sets whether the assistant should detect voicemail. Defaults to true.
|
|
5022
|
+
*
|
|
5023
|
+
* @default true
|
|
5024
|
+
*/
|
|
5025
|
+
enabled?: boolean;
|
|
5026
|
+
/**
|
|
5027
|
+
* The number of seconds that Twilio should attempt to perform answering machine detection before timing out and returning AnsweredBy as unknown. Default is 30 seconds.
|
|
5028
|
+
*
|
|
5029
|
+
* Increasing this value will provide the engine more time to make a determination. This can be useful when DetectMessageEnd is provided in the MachineDetection parameter and there is an expectation of long answering machine greetings that can exceed 30 seconds.
|
|
5030
|
+
*
|
|
5031
|
+
* Decreasing this value will reduce the amount of time the engine has to make a determination. This can be particularly useful when the Enable option is provided in the MachineDetection parameter and you want to limit the time for initial detection.
|
|
5032
|
+
*
|
|
5033
|
+
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
5034
|
+
*
|
|
5035
|
+
* @default 30
|
|
5036
|
+
* @min 3
|
|
5037
|
+
* @max 59
|
|
5038
|
+
*/
|
|
5039
|
+
machineDetectionTimeout?: number;
|
|
5040
|
+
/**
|
|
5041
|
+
* The number of milliseconds that is used as the measuring stick for the length of the speech activity. Durations lower than this value will be interpreted as a human, longer as a machine. Default is 2400 milliseconds.
|
|
5042
|
+
*
|
|
5043
|
+
* Increasing this value will reduce the chance of a False Machine (detected machine, actually human) for a long human greeting (e.g., a business greeting) but increase the time it takes to detect a machine.
|
|
5044
|
+
*
|
|
5045
|
+
* Decreasing this value will reduce the chances of a False Human (detected human, actually machine) for short voicemail greetings. The value of this parameter may need to be reduced by more than 1000ms to detect very short voicemail greetings. A reduction of that significance can result in increased False Machine detections. Adjusting the MachineDetectionSpeechEndThreshold is likely the better approach for short voicemails. Decreasing MachineDetectionSpeechThreshold will also reduce the time it takes to detect a machine.
|
|
5046
|
+
*
|
|
5047
|
+
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
5048
|
+
*
|
|
5049
|
+
* @default 2400
|
|
5050
|
+
* @min 1000
|
|
5051
|
+
* @max 6000
|
|
5052
|
+
*/
|
|
5053
|
+
machineDetectionSpeechThreshold?: number;
|
|
5054
|
+
/**
|
|
5055
|
+
* The number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Default is 1200 milliseconds.
|
|
5056
|
+
*
|
|
5057
|
+
* Increasing this value will typically be used to better address the short voicemail greeting scenarios. For short voicemails, there is typically 1000-2000ms of audio followed by 1200-2400ms of silence and then additional audio before the beep. Increasing the MachineDetectionSpeechEndThreshold to ~2500ms will treat the 1200-2400ms of silence as a gap in the greeting but not the end of the greeting and will result in a machine detection. The downsides of such a change include:
|
|
5058
|
+
* - Increasing the delay for human detection by the amount you increase this parameter, e.g., a change of 1200ms to 2500ms increases human detection delay by 1300ms.
|
|
5059
|
+
* - Cases where a human has two utterances separated by a period of silence (e.g. a "Hello", then 2000ms of silence, and another "Hello") may be interpreted as a machine.
|
|
5060
|
+
*
|
|
5061
|
+
* Decreasing this value will result in faster human detection. The consequence is that it can lead to increased False Human (detected human, actually machine) detections because a silence gap in a voicemail greeting (not necessarily just in short voicemail scenarios) can be incorrectly interpreted as the end of speech.
|
|
5062
|
+
*
|
|
5063
|
+
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
5064
|
+
*
|
|
5065
|
+
* @default 1200
|
|
5066
|
+
* @min 500
|
|
5067
|
+
* @max 5000
|
|
5068
|
+
*/
|
|
5069
|
+
machineDetectionSpeechEndThreshold?: number;
|
|
5070
|
+
/**
|
|
5071
|
+
* The number of milliseconds of initial silence after which an unknown AnsweredBy result will be returned. Default is 5000 milliseconds.
|
|
5072
|
+
*
|
|
5073
|
+
* Increasing this value will result in waiting for a longer period of initial silence before returning an 'unknown' AMD result.
|
|
5074
|
+
*
|
|
5075
|
+
* Decreasing this value will result in waiting for a shorter period of initial silence before returning an 'unknown' AMD result.
|
|
5076
|
+
*
|
|
5077
|
+
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
5078
|
+
*
|
|
5079
|
+
* @default 5000
|
|
5080
|
+
* @min 2000
|
|
5081
|
+
* @max 10000
|
|
5082
|
+
*/
|
|
5083
|
+
machineDetectionSilenceTimeout?: number;
|
|
5084
|
+
}
|
|
5085
|
+
export interface VapiVoicemailDetectionPlan {
|
|
5086
|
+
/**
|
|
5087
|
+
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
5088
|
+
*
|
|
5089
|
+
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
5090
|
+
*
|
|
5091
|
+
* - 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.
|
|
5092
|
+
*
|
|
5093
|
+
* @default 30
|
|
5094
|
+
* @min 0
|
|
5095
|
+
* @max 60
|
|
5096
|
+
* @min 0
|
|
5097
|
+
* @max 30
|
|
5098
|
+
* @default 30
|
|
5099
|
+
*/
|
|
5100
|
+
beepMaxAwaitSeconds?: number;
|
|
5101
|
+
/** This is the provider to use for voicemail detection. */
|
|
5102
|
+
provider: "vapi";
|
|
5103
|
+
/** This is the backoff plan for the voicemail detection. */
|
|
5104
|
+
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
5105
|
+
/**
|
|
5106
|
+
* This is the detection type to use for voicemail detection.
|
|
5107
|
+
* - 'audio': Uses native audio models (default)
|
|
5108
|
+
* - 'transcript': Uses ASR/transcript-based detection
|
|
5109
|
+
* @default 'audio' (audio detection)
|
|
5110
|
+
*/
|
|
5111
|
+
type?: "audio" | "transcript";
|
|
5112
|
+
}
|
|
4888
5113
|
export interface AIEdgeCondition {
|
|
4889
5114
|
type: "ai";
|
|
4890
5115
|
/**
|
|
@@ -4902,6 +5127,56 @@ export interface Edge {
|
|
|
4902
5127
|
/** This is for metadata you want to store on the edge. */
|
|
4903
5128
|
metadata?: object;
|
|
4904
5129
|
}
|
|
5130
|
+
export interface RecordingConsentPlanStayOnLine {
|
|
5131
|
+
/**
|
|
5132
|
+
* This is the message asking for consent to record the call.
|
|
5133
|
+
* If the type is `stay-on-line`, the message should ask the user to hang up if they do not consent.
|
|
5134
|
+
* If the type is `verbal`, the message should ask the user to verbally consent or decline.
|
|
5135
|
+
* @maxLength 1000
|
|
5136
|
+
*/
|
|
5137
|
+
message: string;
|
|
5138
|
+
/**
|
|
5139
|
+
* This is the voice to use for the consent message. If not specified, inherits from the assistant's voice.
|
|
5140
|
+
* Use a different voice for the consent message for a better user experience.
|
|
5141
|
+
*/
|
|
5142
|
+
voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice | SesameVoice | InworldVoice | MinimaxVoice;
|
|
5143
|
+
/**
|
|
5144
|
+
* This is the type of recording consent plan. This type assumes consent is granted if the user stays on the line.
|
|
5145
|
+
* @example "stay-on-line"
|
|
5146
|
+
*/
|
|
5147
|
+
type: "stay-on-line";
|
|
5148
|
+
/**
|
|
5149
|
+
* Number of seconds to wait before transferring to the assistant if user stays on the call
|
|
5150
|
+
* @min 1
|
|
5151
|
+
* @max 6
|
|
5152
|
+
* @default 3
|
|
5153
|
+
* @example 3
|
|
5154
|
+
*/
|
|
5155
|
+
waitSeconds?: number;
|
|
5156
|
+
}
|
|
5157
|
+
export interface RecordingConsentPlanVerbal {
|
|
5158
|
+
/**
|
|
5159
|
+
* This is the message asking for consent to record the call.
|
|
5160
|
+
* If the type is `stay-on-line`, the message should ask the user to hang up if they do not consent.
|
|
5161
|
+
* If the type is `verbal`, the message should ask the user to verbally consent or decline.
|
|
5162
|
+
* @maxLength 1000
|
|
5163
|
+
*/
|
|
5164
|
+
message: string;
|
|
5165
|
+
/**
|
|
5166
|
+
* This is the voice to use for the consent message. If not specified, inherits from the assistant's voice.
|
|
5167
|
+
* Use a different voice for the consent message for a better user experience.
|
|
5168
|
+
*/
|
|
5169
|
+
voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice | SesameVoice | InworldVoice | MinimaxVoice;
|
|
5170
|
+
/**
|
|
5171
|
+
* This is the type of recording consent plan. This type assumes consent is granted if the user verbally consents or declines.
|
|
5172
|
+
* @example "verbal"
|
|
5173
|
+
*/
|
|
5174
|
+
type: "verbal";
|
|
5175
|
+
/** Tool to execute if user verbally declines recording consent */
|
|
5176
|
+
declineTool?: object;
|
|
5177
|
+
/** ID of existing tool to execute if user verbally declines recording consent */
|
|
5178
|
+
declineToolId?: string;
|
|
5179
|
+
}
|
|
4905
5180
|
export type SecurityFilterBase = object;
|
|
4906
5181
|
export interface SecurityFilterPlan {
|
|
4907
5182
|
/**
|
|
@@ -4947,6 +5222,11 @@ export interface CompliancePlan {
|
|
|
4947
5222
|
pciEnabled?: boolean;
|
|
4948
5223
|
/** This is the security filter plan for the assistant. It allows filtering of transcripts for security threats before sending to LLM. */
|
|
4949
5224
|
securityFilterPlan?: SecurityFilterPlan;
|
|
5225
|
+
recordingConsentPlan?: ({
|
|
5226
|
+
type: "stay-on-line";
|
|
5227
|
+
} & RecordingConsentPlanStayOnLine) | ({
|
|
5228
|
+
type: "verbal";
|
|
5229
|
+
} & RecordingConsentPlanVerbal);
|
|
4950
5230
|
}
|
|
4951
5231
|
export interface StructuredDataPlan {
|
|
4952
5232
|
/**
|
|
@@ -5169,6 +5449,11 @@ export interface ArtifactPlan {
|
|
|
5169
5449
|
* @example false
|
|
5170
5450
|
*/
|
|
5171
5451
|
videoRecordingEnabled?: boolean;
|
|
5452
|
+
/**
|
|
5453
|
+
* This determines whether the artifact contains the full message history, even after handoff context engineering. Defaults to false.
|
|
5454
|
+
* @example false
|
|
5455
|
+
*/
|
|
5456
|
+
fullMessageHistoryEnabled?: boolean;
|
|
5172
5457
|
/**
|
|
5173
5458
|
* This determines whether the SIP packet capture is enabled. Defaults to true. Only relevant for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`.
|
|
5174
5459
|
*
|
|
@@ -5520,10 +5805,12 @@ export interface StartSpeakingPlan {
|
|
|
5520
5805
|
*/
|
|
5521
5806
|
smartEndpointingEnabled?: boolean | "livekit";
|
|
5522
5807
|
/**
|
|
5523
|
-
* This is the plan for smart endpointing. Pick between Vapi smart endpointing or
|
|
5808
|
+
* This is the plan for smart endpointing. Pick between Vapi smart endpointing, LiveKit, or custom endpointing model (or nothing). We strongly recommend using livekit endpointing when working in English. LiveKit endpointing is not supported in other languages, yet.
|
|
5524
5809
|
*
|
|
5525
5810
|
* If this is set, it will override and take precedence over `transcriptionEndpointingPlan`.
|
|
5526
5811
|
* This plan will still be overridden by any matching `customEndpointingRules`.
|
|
5812
|
+
*
|
|
5813
|
+
* If this is not set, the system will automatically use the transcriber's built-in endpointing capabilities if available.
|
|
5527
5814
|
*/
|
|
5528
5815
|
smartEndpointingPlan?: VapiSmartEndpointingPlan | LivekitSmartEndpointingPlan | CustomEndpointingModelSmartEndpointingPlan;
|
|
5529
5816
|
/**
|
|
@@ -5551,7 +5838,7 @@ export interface StartSpeakingPlan {
|
|
|
5551
5838
|
*
|
|
5552
5839
|
* Once an endpoint is triggered, the request is sent to `assistant.model`.
|
|
5553
5840
|
*
|
|
5554
|
-
* Note: This plan is only used if `smartEndpointingPlan` is not set. If both are provided, `smartEndpointingPlan` takes precedence.
|
|
5841
|
+
* Note: This plan is only used if `smartEndpointingPlan` is not set and transcriber does not have built-in endpointing capabilities. If both are provided, `smartEndpointingPlan` takes precedence.
|
|
5555
5842
|
* This plan will also be overridden by any matching `customEndpointingRules`.
|
|
5556
5843
|
*/
|
|
5557
5844
|
transcriptionEndpointingPlan?: TranscriptionEndpointingPlan;
|
|
@@ -5885,6 +6172,8 @@ export interface WorkflowUserEditable {
|
|
|
5885
6172
|
} & CreateInworldCredentialDTO) | ({
|
|
5886
6173
|
provider: "minimax";
|
|
5887
6174
|
} & CreateMinimaxCredentialDTO))[];
|
|
6175
|
+
/** This is the voicemail detection plan for the workflow. */
|
|
6176
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
5888
6177
|
/** @maxLength 80 */
|
|
5889
6178
|
name: string;
|
|
5890
6179
|
edges: Edge[];
|
|
@@ -5951,6 +6240,13 @@ export interface WorkflowUserEditable {
|
|
|
5951
6240
|
credentialIds?: string[];
|
|
5952
6241
|
/** This is the plan for keypad input handling during workflow calls. */
|
|
5953
6242
|
keypadInputPlan?: KeypadInputPlan;
|
|
6243
|
+
/**
|
|
6244
|
+
* This is the message that the assistant will say if the call is forwarded to voicemail.
|
|
6245
|
+
*
|
|
6246
|
+
* If unspecified, it will hang up.
|
|
6247
|
+
* @maxLength 1000
|
|
6248
|
+
*/
|
|
6249
|
+
voicemailMessage?: string;
|
|
5954
6250
|
}
|
|
5955
6251
|
export interface VapiModel {
|
|
5956
6252
|
/** This is the starting state for the conversation. */
|
|
@@ -6317,7 +6613,7 @@ export interface DeepgramVoice {
|
|
|
6317
6613
|
* This is the Deepgram Voice ID
|
|
6318
6614
|
* This is the provider-specific ID that will be used.
|
|
6319
6615
|
*/
|
|
6320
|
-
voiceId: "asteria" | "luna" | "stella" | "athena" | "hera" | "orion" | "arcas" | "perseus" | "angus" | "orpheus" | "helios" | "zeus" | "thalia" | "andromeda" | "helena" | "apollo" | "aries" | "amalthea" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "pandora" | "phoebe" | "pluto" | "saturn" | "selene" | "theia" | "vesta";
|
|
6616
|
+
voiceId: "asteria" | "luna" | "stella" | "athena" | "hera" | "orion" | "arcas" | "perseus" | "angus" | "orpheus" | "helios" | "zeus" | "thalia" | "andromeda" | "helena" | "apollo" | "aries" | "amalthea" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "pandora" | "phoebe" | "pluto" | "saturn" | "selene" | "theia" | "vesta" | "celeste" | "estrella" | "nestor" | "sirio" | "carina" | "alvaro" | "diana" | "aquila" | "selena" | "javier";
|
|
6321
6617
|
/**
|
|
6322
6618
|
* This is the model that will be used. Defaults to 'aura-2' when not specified.
|
|
6323
6619
|
* @example "aura-2"
|
|
@@ -6864,7 +7160,7 @@ export interface MinimaxVoice {
|
|
|
6864
7160
|
* @default "speech-02-turbo"
|
|
6865
7161
|
* @example "speech-02-turbo"
|
|
6866
7162
|
*/
|
|
6867
|
-
model?: "speech-02-hd" | "speech-02-turbo";
|
|
7163
|
+
model?: "speech-02-hd" | "speech-02-turbo" | "speech-2.5-turbo-preview";
|
|
6868
7164
|
/**
|
|
6869
7165
|
* The emotion to use for the voice. If not provided, will use auto-detect mode.
|
|
6870
7166
|
* Options include: 'happy', 'sad', 'angry', 'fearful', 'surprised', 'disgusted', 'neutral'
|
|
@@ -6903,6 +7199,13 @@ export interface MinimaxVoice {
|
|
|
6903
7199
|
* @default "worldwide"
|
|
6904
7200
|
*/
|
|
6905
7201
|
region?: "worldwide" | "china";
|
|
7202
|
+
/** Language hint for MiniMax T2A. Example: yue (Cantonese), zh (Chinese), en (English). */
|
|
7203
|
+
languageBoost?: "Chinese" | "Chinese,Yue" | "English" | "Arabic" | "Russian" | "Spanish" | "French" | "Portuguese" | "German" | "Turkish" | "Dutch" | "Ukrainian" | "Vietnamese" | "Indonesian" | "Japanese" | "Italian" | "Korean" | "Thai" | "Polish" | "Romanian" | "Greek" | "Czech" | "Finnish" | "Hindi" | "Bulgarian" | "Danish" | "Hebrew" | "Malay" | "Persian" | "Slovak" | "Swedish" | "Croatian" | "Filipino" | "Hungarian" | "Norwegian" | "Slovenian" | "Catalan" | "Nynorsk" | "Tamil" | "Afrikaans" | "auto";
|
|
7204
|
+
/**
|
|
7205
|
+
* Enable MiniMax text normalization to improve number reading and formatting.
|
|
7206
|
+
* @default true
|
|
7207
|
+
*/
|
|
7208
|
+
textNormalizationEnabled?: boolean;
|
|
6906
7209
|
/** This is the plan for chunking the model output before it is sent to the voice provider. */
|
|
6907
7210
|
chunkPlan?: ChunkPlan;
|
|
6908
7211
|
/** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
|
|
@@ -7004,7 +7307,7 @@ export interface FallbackDeepgramVoice {
|
|
|
7004
7307
|
* This is the Deepgram Voice ID
|
|
7005
7308
|
* This is the provider-specific ID that will be used.
|
|
7006
7309
|
*/
|
|
7007
|
-
voiceId: "asteria" | "luna" | "stella" | "athena" | "hera" | "orion" | "arcas" | "perseus" | "angus" | "orpheus" | "helios" | "zeus" | "thalia" | "andromeda" | "helena" | "apollo" | "aries" | "amalthea" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "pandora" | "phoebe" | "pluto" | "saturn" | "selene" | "theia" | "vesta";
|
|
7310
|
+
voiceId: "asteria" | "luna" | "stella" | "athena" | "hera" | "orion" | "arcas" | "perseus" | "angus" | "orpheus" | "helios" | "zeus" | "thalia" | "andromeda" | "helena" | "apollo" | "aries" | "amalthea" | "atlas" | "aurora" | "callista" | "cora" | "cordelia" | "delia" | "draco" | "electra" | "harmonia" | "hermes" | "hyperion" | "iris" | "janus" | "juno" | "jupiter" | "mars" | "minerva" | "neptune" | "odysseus" | "ophelia" | "pandora" | "phoebe" | "pluto" | "saturn" | "selene" | "theia" | "vesta" | "celeste" | "estrella" | "nestor" | "sirio" | "carina" | "alvaro" | "diana" | "aquila" | "selena" | "javier";
|
|
7008
7311
|
/**
|
|
7009
7312
|
* This is the model that will be used. Defaults to 'aura-2' when not specified.
|
|
7010
7313
|
* @example "aura-2"
|
|
@@ -7473,7 +7776,7 @@ export interface FallbackMinimaxVoice {
|
|
|
7473
7776
|
* @default "speech-02-turbo"
|
|
7474
7777
|
* @example "speech-02-turbo"
|
|
7475
7778
|
*/
|
|
7476
|
-
model?: "speech-02-hd" | "speech-02-turbo";
|
|
7779
|
+
model?: "speech-02-hd" | "speech-02-turbo" | "speech-2.5-turbo-preview";
|
|
7477
7780
|
/**
|
|
7478
7781
|
* The emotion to use for the voice. If not provided, will use auto-detect mode.
|
|
7479
7782
|
* Options include: 'happy', 'sad', 'angry', 'fearful', 'surprised', 'disgusted', 'neutral'
|
|
@@ -7512,6 +7815,13 @@ export interface FallbackMinimaxVoice {
|
|
|
7512
7815
|
* @default "worldwide"
|
|
7513
7816
|
*/
|
|
7514
7817
|
region?: "worldwide" | "china";
|
|
7818
|
+
/** Language hint for MiniMax T2A. Example: yue (Cantonese), zh (Chinese), en (English). */
|
|
7819
|
+
languageBoost?: "Chinese" | "Chinese,Yue" | "English" | "Arabic" | "Russian" | "Spanish" | "French" | "Portuguese" | "German" | "Turkish" | "Dutch" | "Ukrainian" | "Vietnamese" | "Indonesian" | "Japanese" | "Italian" | "Korean" | "Thai" | "Polish" | "Romanian" | "Greek" | "Czech" | "Finnish" | "Hindi" | "Bulgarian" | "Danish" | "Hebrew" | "Malay" | "Persian" | "Slovak" | "Swedish" | "Croatian" | "Filipino" | "Hungarian" | "Norwegian" | "Slovenian" | "Catalan" | "Nynorsk" | "Tamil" | "Afrikaans" | "auto";
|
|
7820
|
+
/**
|
|
7821
|
+
* Enable MiniMax text normalization to improve number reading and formatting.
|
|
7822
|
+
* @default true
|
|
7823
|
+
*/
|
|
7824
|
+
textNormalizationEnabled?: boolean;
|
|
7515
7825
|
/** This is the plan for chunking the model output before it is sent to the voice provider. */
|
|
7516
7826
|
chunkPlan?: ChunkPlan;
|
|
7517
7827
|
}
|
|
@@ -8576,186 +8886,6 @@ export interface CallHookCustomerSpeechTimeout {
|
|
|
8576
8886
|
*/
|
|
8577
8887
|
name?: string;
|
|
8578
8888
|
}
|
|
8579
|
-
export interface VoicemailDetectionBackoffPlan {
|
|
8580
|
-
/**
|
|
8581
|
-
* This is the number of seconds to wait before starting the first retry attempt.
|
|
8582
|
-
* @min 0
|
|
8583
|
-
* @default 5
|
|
8584
|
-
*/
|
|
8585
|
-
startAtSeconds?: number;
|
|
8586
|
-
/**
|
|
8587
|
-
* This is the interval in seconds between retry attempts.
|
|
8588
|
-
* @min 2.5
|
|
8589
|
-
* @default 5
|
|
8590
|
-
*/
|
|
8591
|
-
frequencySeconds?: number;
|
|
8592
|
-
/**
|
|
8593
|
-
* This is the maximum number of retry attempts before giving up.
|
|
8594
|
-
* @min 1
|
|
8595
|
-
* @max 10
|
|
8596
|
-
* @default 6
|
|
8597
|
-
*/
|
|
8598
|
-
maxRetries?: number;
|
|
8599
|
-
}
|
|
8600
|
-
export interface GoogleVoicemailDetectionPlan {
|
|
8601
|
-
/**
|
|
8602
|
-
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
8603
|
-
*
|
|
8604
|
-
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
8605
|
-
*
|
|
8606
|
-
* - 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.
|
|
8607
|
-
*
|
|
8608
|
-
* @default 30
|
|
8609
|
-
* @min 0
|
|
8610
|
-
* @max 60
|
|
8611
|
-
* @min 0
|
|
8612
|
-
* @max 30
|
|
8613
|
-
* @default 30
|
|
8614
|
-
*/
|
|
8615
|
-
beepMaxAwaitSeconds?: number;
|
|
8616
|
-
/** This is the provider to use for voicemail detection. */
|
|
8617
|
-
provider: "google";
|
|
8618
|
-
/** This is the backoff plan for the voicemail detection. */
|
|
8619
|
-
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
8620
|
-
/**
|
|
8621
|
-
* This is the detection type to use for voicemail detection.
|
|
8622
|
-
* - 'audio': Uses native audio models (default)
|
|
8623
|
-
* - 'transcript': Uses ASR/transcript-based detection
|
|
8624
|
-
* @default 'audio' (audio detection)
|
|
8625
|
-
*/
|
|
8626
|
-
type?: "audio" | "transcript";
|
|
8627
|
-
}
|
|
8628
|
-
export interface OpenAIVoicemailDetectionPlan {
|
|
8629
|
-
/**
|
|
8630
|
-
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
8631
|
-
*
|
|
8632
|
-
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
8633
|
-
*
|
|
8634
|
-
* - 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.
|
|
8635
|
-
*
|
|
8636
|
-
* @default 30
|
|
8637
|
-
* @min 0
|
|
8638
|
-
* @max 60
|
|
8639
|
-
* @min 0
|
|
8640
|
-
* @max 30
|
|
8641
|
-
* @default 30
|
|
8642
|
-
*/
|
|
8643
|
-
beepMaxAwaitSeconds?: number;
|
|
8644
|
-
/** This is the provider to use for voicemail detection. */
|
|
8645
|
-
provider: "openai";
|
|
8646
|
-
/** This is the backoff plan for the voicemail detection. */
|
|
8647
|
-
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
8648
|
-
/**
|
|
8649
|
-
* This is the detection type to use for voicemail detection.
|
|
8650
|
-
* - 'audio': Uses native audio models (default)
|
|
8651
|
-
* - 'transcript': Uses ASR/transcript-based detection
|
|
8652
|
-
* @default 'audio' (audio detection)
|
|
8653
|
-
*/
|
|
8654
|
-
type?: "audio" | "transcript";
|
|
8655
|
-
}
|
|
8656
|
-
export interface TwilioVoicemailDetectionPlan {
|
|
8657
|
-
/** This is the provider to use for voicemail detection. */
|
|
8658
|
-
provider: "twilio";
|
|
8659
|
-
/**
|
|
8660
|
-
* These are the AMD messages from Twilio that are considered as voicemail. Default is ['machine_end_beep', 'machine_end_silence'].
|
|
8661
|
-
*
|
|
8662
|
-
* @default {Array} ['machine_end_beep', 'machine_end_silence']
|
|
8663
|
-
* @example ["machine_end_beep","machine_end_silence"]
|
|
8664
|
-
*/
|
|
8665
|
-
voicemailDetectionTypes?: "machine_start" | "human" | "fax" | "unknown" | "machine_end_beep" | "machine_end_silence" | "machine_end_other";
|
|
8666
|
-
/**
|
|
8667
|
-
* This sets whether the assistant should detect voicemail. Defaults to true.
|
|
8668
|
-
*
|
|
8669
|
-
* @default true
|
|
8670
|
-
*/
|
|
8671
|
-
enabled?: boolean;
|
|
8672
|
-
/**
|
|
8673
|
-
* The number of seconds that Twilio should attempt to perform answering machine detection before timing out and returning AnsweredBy as unknown. Default is 30 seconds.
|
|
8674
|
-
*
|
|
8675
|
-
* Increasing this value will provide the engine more time to make a determination. This can be useful when DetectMessageEnd is provided in the MachineDetection parameter and there is an expectation of long answering machine greetings that can exceed 30 seconds.
|
|
8676
|
-
*
|
|
8677
|
-
* Decreasing this value will reduce the amount of time the engine has to make a determination. This can be particularly useful when the Enable option is provided in the MachineDetection parameter and you want to limit the time for initial detection.
|
|
8678
|
-
*
|
|
8679
|
-
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
8680
|
-
*
|
|
8681
|
-
* @default 30
|
|
8682
|
-
* @min 3
|
|
8683
|
-
* @max 59
|
|
8684
|
-
*/
|
|
8685
|
-
machineDetectionTimeout?: number;
|
|
8686
|
-
/**
|
|
8687
|
-
* The number of milliseconds that is used as the measuring stick for the length of the speech activity. Durations lower than this value will be interpreted as a human, longer as a machine. Default is 2400 milliseconds.
|
|
8688
|
-
*
|
|
8689
|
-
* Increasing this value will reduce the chance of a False Machine (detected machine, actually human) for a long human greeting (e.g., a business greeting) but increase the time it takes to detect a machine.
|
|
8690
|
-
*
|
|
8691
|
-
* Decreasing this value will reduce the chances of a False Human (detected human, actually machine) for short voicemail greetings. The value of this parameter may need to be reduced by more than 1000ms to detect very short voicemail greetings. A reduction of that significance can result in increased False Machine detections. Adjusting the MachineDetectionSpeechEndThreshold is likely the better approach for short voicemails. Decreasing MachineDetectionSpeechThreshold will also reduce the time it takes to detect a machine.
|
|
8692
|
-
*
|
|
8693
|
-
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
8694
|
-
*
|
|
8695
|
-
* @default 2400
|
|
8696
|
-
* @min 1000
|
|
8697
|
-
* @max 6000
|
|
8698
|
-
*/
|
|
8699
|
-
machineDetectionSpeechThreshold?: number;
|
|
8700
|
-
/**
|
|
8701
|
-
* The number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Default is 1200 milliseconds.
|
|
8702
|
-
*
|
|
8703
|
-
* Increasing this value will typically be used to better address the short voicemail greeting scenarios. For short voicemails, there is typically 1000-2000ms of audio followed by 1200-2400ms of silence and then additional audio before the beep. Increasing the MachineDetectionSpeechEndThreshold to ~2500ms will treat the 1200-2400ms of silence as a gap in the greeting but not the end of the greeting and will result in a machine detection. The downsides of such a change include:
|
|
8704
|
-
* - Increasing the delay for human detection by the amount you increase this parameter, e.g., a change of 1200ms to 2500ms increases human detection delay by 1300ms.
|
|
8705
|
-
* - Cases where a human has two utterances separated by a period of silence (e.g. a "Hello", then 2000ms of silence, and another "Hello") may be interpreted as a machine.
|
|
8706
|
-
*
|
|
8707
|
-
* Decreasing this value will result in faster human detection. The consequence is that it can lead to increased False Human (detected human, actually machine) detections because a silence gap in a voicemail greeting (not necessarily just in short voicemail scenarios) can be incorrectly interpreted as the end of speech.
|
|
8708
|
-
*
|
|
8709
|
-
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
8710
|
-
*
|
|
8711
|
-
* @default 1200
|
|
8712
|
-
* @min 500
|
|
8713
|
-
* @max 5000
|
|
8714
|
-
*/
|
|
8715
|
-
machineDetectionSpeechEndThreshold?: number;
|
|
8716
|
-
/**
|
|
8717
|
-
* The number of milliseconds of initial silence after which an unknown AnsweredBy result will be returned. Default is 5000 milliseconds.
|
|
8718
|
-
*
|
|
8719
|
-
* Increasing this value will result in waiting for a longer period of initial silence before returning an 'unknown' AMD result.
|
|
8720
|
-
*
|
|
8721
|
-
* Decreasing this value will result in waiting for a shorter period of initial silence before returning an 'unknown' AMD result.
|
|
8722
|
-
*
|
|
8723
|
-
* Check the [Twilio docs](https://www.twilio.com/docs/voice/answering-machine-detection#optional-api-tuning-parameters) for more info.
|
|
8724
|
-
*
|
|
8725
|
-
* @default 5000
|
|
8726
|
-
* @min 2000
|
|
8727
|
-
* @max 10000
|
|
8728
|
-
*/
|
|
8729
|
-
machineDetectionSilenceTimeout?: number;
|
|
8730
|
-
}
|
|
8731
|
-
export interface VapiVoicemailDetectionPlan {
|
|
8732
|
-
/**
|
|
8733
|
-
* This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message
|
|
8734
|
-
*
|
|
8735
|
-
* - If we detect a voicemail beep before this, we will speak the message at that point.
|
|
8736
|
-
*
|
|
8737
|
-
* - 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.
|
|
8738
|
-
*
|
|
8739
|
-
* @default 30
|
|
8740
|
-
* @min 0
|
|
8741
|
-
* @max 60
|
|
8742
|
-
* @min 0
|
|
8743
|
-
* @max 30
|
|
8744
|
-
* @default 30
|
|
8745
|
-
*/
|
|
8746
|
-
beepMaxAwaitSeconds?: number;
|
|
8747
|
-
/** This is the provider to use for voicemail detection. */
|
|
8748
|
-
provider: "vapi";
|
|
8749
|
-
/** This is the backoff plan for the voicemail detection. */
|
|
8750
|
-
backoffPlan?: VoicemailDetectionBackoffPlan;
|
|
8751
|
-
/**
|
|
8752
|
-
* This is the detection type to use for voicemail detection.
|
|
8753
|
-
* - 'audio': Uses native audio models (default)
|
|
8754
|
-
* - 'transcript': Uses ASR/transcript-based detection
|
|
8755
|
-
* @default 'audio' (audio detection)
|
|
8756
|
-
*/
|
|
8757
|
-
type?: "audio" | "transcript";
|
|
8758
|
-
}
|
|
8759
8889
|
export interface SQLInjectionSecurityFilter {
|
|
8760
8890
|
/** The type of security threat to filter. */
|
|
8761
8891
|
type: "sql-injection";
|
|
@@ -9338,6 +9468,10 @@ export interface PaginationMeta {
|
|
|
9338
9468
|
totalItems: number;
|
|
9339
9469
|
currentPage: number;
|
|
9340
9470
|
itemsBeyondRetention?: boolean;
|
|
9471
|
+
/** @format date-time */
|
|
9472
|
+
createdAtLe?: string;
|
|
9473
|
+
/** @format date-time */
|
|
9474
|
+
createdAtGe?: string;
|
|
9341
9475
|
}
|
|
9342
9476
|
export interface AssistantPaginatedResponse {
|
|
9343
9477
|
results: Assistant[];
|
|
@@ -10109,6 +10243,8 @@ export interface Workflow {
|
|
|
10109
10243
|
} & CreateInworldCredentialDTO) | ({
|
|
10110
10244
|
provider: "minimax";
|
|
10111
10245
|
} & CreateMinimaxCredentialDTO))[];
|
|
10246
|
+
/** This is the voicemail detection plan for the workflow. */
|
|
10247
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
10112
10248
|
id: string;
|
|
10113
10249
|
orgId: string;
|
|
10114
10250
|
/** @format date-time */
|
|
@@ -10181,6 +10317,13 @@ export interface Workflow {
|
|
|
10181
10317
|
credentialIds?: string[];
|
|
10182
10318
|
/** This is the plan for keypad input handling during workflow calls. */
|
|
10183
10319
|
keypadInputPlan?: KeypadInputPlan;
|
|
10320
|
+
/**
|
|
10321
|
+
* This is the message that the assistant will say if the call is forwarded to voicemail.
|
|
10322
|
+
*
|
|
10323
|
+
* If unspecified, it will hang up.
|
|
10324
|
+
* @maxLength 1000
|
|
10325
|
+
*/
|
|
10326
|
+
voicemailMessage?: string;
|
|
10184
10327
|
}
|
|
10185
10328
|
export interface CreateWorkflowDTO {
|
|
10186
10329
|
nodes: (ConversationNode | ToolNode)[];
|
|
@@ -10319,6 +10462,8 @@ export interface CreateWorkflowDTO {
|
|
|
10319
10462
|
} & CreateInworldCredentialDTO) | ({
|
|
10320
10463
|
provider: "minimax";
|
|
10321
10464
|
} & CreateMinimaxCredentialDTO))[];
|
|
10465
|
+
/** This is the voicemail detection plan for the workflow. */
|
|
10466
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
10322
10467
|
/** @maxLength 80 */
|
|
10323
10468
|
name: string;
|
|
10324
10469
|
edges: Edge[];
|
|
@@ -10385,6 +10530,13 @@ export interface CreateWorkflowDTO {
|
|
|
10385
10530
|
credentialIds?: string[];
|
|
10386
10531
|
/** This is the plan for keypad input handling during workflow calls. */
|
|
10387
10532
|
keypadInputPlan?: KeypadInputPlan;
|
|
10533
|
+
/**
|
|
10534
|
+
* This is the message that the assistant will say if the call is forwarded to voicemail.
|
|
10535
|
+
*
|
|
10536
|
+
* If unspecified, it will hang up.
|
|
10537
|
+
* @maxLength 1000
|
|
10538
|
+
*/
|
|
10539
|
+
voicemailMessage?: string;
|
|
10388
10540
|
}
|
|
10389
10541
|
export interface UpdateWorkflowDTO {
|
|
10390
10542
|
nodes?: (ConversationNode | ToolNode)[];
|
|
@@ -10523,6 +10675,8 @@ export interface UpdateWorkflowDTO {
|
|
|
10523
10675
|
} & CreateInworldCredentialDTO) | ({
|
|
10524
10676
|
provider: "minimax";
|
|
10525
10677
|
} & CreateMinimaxCredentialDTO))[];
|
|
10678
|
+
/** This is the voicemail detection plan for the workflow. */
|
|
10679
|
+
voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan | VapiVoicemailDetectionPlan;
|
|
10526
10680
|
/** @maxLength 80 */
|
|
10527
10681
|
name?: string;
|
|
10528
10682
|
edges?: Edge[];
|
|
@@ -10589,6 +10743,13 @@ export interface UpdateWorkflowDTO {
|
|
|
10589
10743
|
credentialIds?: string[];
|
|
10590
10744
|
/** This is the plan for keypad input handling during workflow calls. */
|
|
10591
10745
|
keypadInputPlan?: KeypadInputPlan;
|
|
10746
|
+
/**
|
|
10747
|
+
* This is the message that the assistant will say if the call is forwarded to voicemail.
|
|
10748
|
+
*
|
|
10749
|
+
* If unspecified, it will hang up.
|
|
10750
|
+
* @maxLength 1000
|
|
10751
|
+
*/
|
|
10752
|
+
voicemailMessage?: string;
|
|
10592
10753
|
}
|
|
10593
10754
|
export interface AnalysisCostBreakdown {
|
|
10594
10755
|
/** This is the cost to summarize the call. */
|
|
@@ -10752,6 +10913,22 @@ export interface Artifact {
|
|
|
10752
10913
|
* To enable, set `assistant.artifactPlan.structuredOutputIds` with the IDs of the structured outputs you want to extract.
|
|
10753
10914
|
*/
|
|
10754
10915
|
structuredOutputs?: object;
|
|
10916
|
+
/** These are the transfer records from warm transfers, including destinations, transcripts, and status. */
|
|
10917
|
+
transfers?: string[];
|
|
10918
|
+
}
|
|
10919
|
+
export interface RecordingConsent {
|
|
10920
|
+
/** This is the type of recording consent. */
|
|
10921
|
+
type: object;
|
|
10922
|
+
/**
|
|
10923
|
+
* This is the date and time the recording consent was granted.
|
|
10924
|
+
* If not specified, it means the recording consent was not granted.
|
|
10925
|
+
* @format date-time
|
|
10926
|
+
*/
|
|
10927
|
+
grantedAt?: string;
|
|
10928
|
+
}
|
|
10929
|
+
export interface Compliance {
|
|
10930
|
+
/** This is the recording consent of the call. Configure in `assistant.compliancePlan.recordingConsentPlan`. */
|
|
10931
|
+
recordingConsent?: RecordingConsent;
|
|
10755
10932
|
}
|
|
10756
10933
|
export interface WorkflowOverrides {
|
|
10757
10934
|
/**
|
|
@@ -10968,7 +11145,7 @@ export interface Call {
|
|
|
10968
11145
|
/** This is the status of the call. */
|
|
10969
11146
|
status?: "scheduled" | "queued" | "ringing" | "in-progress" | "forwarding" | "ended";
|
|
10970
11147
|
/** This is the explanation for how the call ended. */
|
|
10971
|
-
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" | "scheduled-call-deleted" | "call.start.error-vapifault-get-org" | "call.start.error-vapifault-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" | "call.start.error-subscription-wallet-does-not-exist" | "call.start.error-subscription-frozen" | "call.start.error-subscription-insufficient-credits" | "call.start.error-subscription-upgrade-failed" | "call.start.error-subscription-concurrency-limit-reached" | "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-inworld-voice-failed" | "pipeline-error-minimax-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-inworld-voice-failed" | "call.in-progress.error-vapifault-minimax-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-providerfault-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" | "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-worker-died" | "call.in-progress.twilio-completed-call" | "call.in-progress.sip-completed-call" | "call.in-progress.error-providerfault-openai-llm-failed" | "call.in-progress.error-providerfault-azure-openai-llm-failed" | "call.in-progress.error-providerfault-groq-llm-failed" | "call.in-progress.error-providerfault-google-llm-failed" | "call.in-progress.error-providerfault-xai-llm-failed" | "call.in-progress.error-providerfault-mistral-llm-failed" | "call.in-progress.error-providerfault-inflection-ai-llm-failed" | "call.in-progress.error-providerfault-cerebras-llm-failed" | "call.in-progress.error-providerfault-deep-seek-llm-failed" | "call.in-progress.error-vapifault-chat-pipeline-failed-to-start" | "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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-502-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-vapi-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" | "pipeline-error-eleven-labs-503-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" | "call.in-progress.error-providerfault-eleven-labs-503-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" | "pipeline-error-deepgram-returning-econnreset" | "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" | "call.in-progress.error-warm-transfer-max-duration" | "call.in-progress.error-warm-transfer-assistant-cancelled" | "call.in-progress.error-warm-transfer-silence-timeout" | "call.in-progress.error-warm-transfer-microphone-timeout" | "call.in-progress.error-warm-transfer-hang-timeout" | "call.in-progress.error-warm-transfer-idle-timeout" | "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" | "call.in-progress.error-transfer-failed" | "customer-busy" | "customer-ended-call" | "customer-ended-call-after-warm-transfer-attempt" | "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-inbound-call-failed-to-connect" | "call.in-progress.error-providerfault-outbound-sip-403-forbidden" | "call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required" | "call.in-progress.error-providerfault-outbound-sip-503-service-unavailable" | "call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable" | "call.in-progress.error-sip-outbound-call-failed-to-connect" | "call.ringing.hook-executed-say" | "call.ringing.hook-executed-transfer" | "call.ending.hook-executed-say" | "call.ending.hook-executed-transfer" | "call.ringing.sip-inbound-caller-hungup-before-call-connect" | "call.ringing.error-sip-inbound-call-failed-to-connect" | "twilio-failed-to-connect-call" | "twilio-reported-customer-misdialed" | "vonage-rejected" | "voicemail";
|
|
11148
|
+
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" | "scheduled-call-deleted" | "call.start.error-vapifault-get-org" | "call.start.error-vapifault-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" | "call.start.error-subscription-wallet-does-not-exist" | "call.start.error-fraud-check-failed" | "call.start.error-subscription-frozen" | "call.start.error-subscription-insufficient-credits" | "call.start.error-subscription-upgrade-failed" | "call.start.error-subscription-concurrency-limit-reached" | "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-inworld-voice-failed" | "pipeline-error-minimax-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-inworld-voice-failed" | "call.in-progress.error-vapifault-minimax-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-providerfault-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" | "pipeline-error-deepgram-transcriber-api-key-missing" | "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" | "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-worker-died" | "call.in-progress.twilio-completed-call" | "call.in-progress.sip-completed-call" | "call.in-progress.error-providerfault-openai-llm-failed" | "call.in-progress.error-providerfault-azure-openai-llm-failed" | "call.in-progress.error-providerfault-groq-llm-failed" | "call.in-progress.error-providerfault-google-llm-failed" | "call.in-progress.error-providerfault-xai-llm-failed" | "call.in-progress.error-providerfault-mistral-llm-failed" | "call.in-progress.error-providerfault-inflection-ai-llm-failed" | "call.in-progress.error-providerfault-cerebras-llm-failed" | "call.in-progress.error-providerfault-deep-seek-llm-failed" | "call.in-progress.error-vapifault-chat-pipeline-failed-to-start" | "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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-502-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-vapi-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" | "pipeline-error-eleven-labs-503-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" | "call.in-progress.error-providerfault-eleven-labs-503-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" | "pipeline-error-deepgram-returning-econnreset" | "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" | "call.in-progress.error-warm-transfer-max-duration" | "call.in-progress.error-warm-transfer-assistant-cancelled" | "call.in-progress.error-warm-transfer-silence-timeout" | "call.in-progress.error-warm-transfer-microphone-timeout" | "call.in-progress.error-warm-transfer-hang-timeout" | "call.in-progress.error-warm-transfer-idle-timeout" | "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" | "call.in-progress.error-transfer-failed" | "customer-busy" | "customer-ended-call" | "customer-ended-call-after-warm-transfer-attempt" | "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-inbound-call-failed-to-connect" | "call.in-progress.error-providerfault-outbound-sip-403-forbidden" | "call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required" | "call.in-progress.error-providerfault-outbound-sip-503-service-unavailable" | "call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable" | "call.in-progress.error-sip-outbound-call-failed-to-connect" | "call.ringing.hook-executed-say" | "call.ringing.hook-executed-transfer" | "call.ending.hook-executed-say" | "call.ending.hook-executed-transfer" | "call.ringing.sip-inbound-caller-hungup-before-call-connect" | "call.ringing.error-sip-inbound-call-failed-to-connect" | "twilio-failed-to-connect-call" | "twilio-reported-customer-misdialed" | "vonage-rejected" | "voicemail";
|
|
10972
11149
|
/** This is the destination where the call ended up being transferred to. If the call was not transferred, this will be empty. */
|
|
10973
11150
|
destination?: TransferDestinationNumber | TransferDestinationSip;
|
|
10974
11151
|
/** This is the unique identifier for the call. */
|
|
@@ -11007,6 +11184,8 @@ export interface Call {
|
|
|
11007
11184
|
monitor?: Monitor;
|
|
11008
11185
|
/** These are the artifacts created from the call. Configure in `assistant.artifactPlan`. */
|
|
11009
11186
|
artifact?: Artifact;
|
|
11187
|
+
/** This is the compliance of the call. Configure in `assistant.compliancePlan`. */
|
|
11188
|
+
compliance?: Compliance;
|
|
11010
11189
|
/**
|
|
11011
11190
|
* The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage. callControlId in Telnyx.
|
|
11012
11191
|
*
|
|
@@ -11379,6 +11558,15 @@ export interface CreateWebCallDTO {
|
|
|
11379
11558
|
workflow?: CreateWorkflowDTO;
|
|
11380
11559
|
/** These are the overrides for the `workflow` or `workflowId`'s settings and template variables. */
|
|
11381
11560
|
workflowOverrides?: WorkflowOverrides;
|
|
11561
|
+
/**
|
|
11562
|
+
* This determines whether the daily room will be deleted and all participants will be kicked once the user leaves the room.
|
|
11563
|
+
* If set to `false`, the room will be kept alive even after the user leaves, allowing clients to reconnect to the same room.
|
|
11564
|
+
* If set to `true`, the room will be deleted and reconnection will not be allowed.
|
|
11565
|
+
*
|
|
11566
|
+
* Defaults to `true`.
|
|
11567
|
+
* @example true
|
|
11568
|
+
*/
|
|
11569
|
+
roomDeleteOnUserLeaveEnabled?: boolean;
|
|
11382
11570
|
}
|
|
11383
11571
|
export interface UpdateCallDTO {
|
|
11384
11572
|
/**
|
|
@@ -11435,13 +11623,15 @@ export interface UserMessage {
|
|
|
11435
11623
|
detectedThreats?: string[];
|
|
11436
11624
|
/** The original message before filtering (only included if content was filtered). */
|
|
11437
11625
|
originalMessage?: string;
|
|
11626
|
+
/** The metadata associated with the message. Currently used to store the transcriber's word level confidence. */
|
|
11627
|
+
metadata?: object;
|
|
11438
11628
|
}
|
|
11439
11629
|
export interface ToolCallFunction {
|
|
11440
11630
|
/** This is the arguments to call the function with */
|
|
11441
11631
|
arguments: string;
|
|
11442
11632
|
/**
|
|
11443
11633
|
* This is the name of the function to call
|
|
11444
|
-
* @maxLength
|
|
11634
|
+
* @maxLength 80
|
|
11445
11635
|
*/
|
|
11446
11636
|
name: string;
|
|
11447
11637
|
}
|
|
@@ -11519,6 +11709,10 @@ export interface Chat {
|
|
|
11519
11709
|
* Only variable substitution is supported in chat contexts - other assistant properties cannot be overridden.
|
|
11520
11710
|
*/
|
|
11521
11711
|
assistantOverrides?: AssistantOverrides;
|
|
11712
|
+
/** This is the squad that will be used for the chat. To use a transient squad, use `squad` instead. */
|
|
11713
|
+
squadId?: string;
|
|
11714
|
+
/** This is the squad that will be used for the chat. To use an existing squad, use `squadId` instead. */
|
|
11715
|
+
squad?: CreateSquadDTO;
|
|
11522
11716
|
/**
|
|
11523
11717
|
* This is the name of the chat. This is just for your own reference.
|
|
11524
11718
|
* @maxLength 40
|
|
@@ -11572,6 +11766,32 @@ export interface Chat {
|
|
|
11572
11766
|
/** This is the cost of the chat in USD. */
|
|
11573
11767
|
cost?: number;
|
|
11574
11768
|
}
|
|
11769
|
+
export interface TwilioSMSChatTransport {
|
|
11770
|
+
/**
|
|
11771
|
+
* This is the phone number that will be used to send the SMS.
|
|
11772
|
+
* If provided, will create a new session. If not provided, uses existing session's phoneNumberId.
|
|
11773
|
+
* The phone number must have SMS enabled and belong to your organization.
|
|
11774
|
+
*/
|
|
11775
|
+
phoneNumberId?: string;
|
|
11776
|
+
/**
|
|
11777
|
+
* This is the customer who will receive the SMS.
|
|
11778
|
+
* If provided, will create a new session. If not provided, uses existing session's customer.
|
|
11779
|
+
*/
|
|
11780
|
+
customer?: CreateCustomerDTO;
|
|
11781
|
+
/**
|
|
11782
|
+
* Whether to use LLM-generated messages for outbound SMS.
|
|
11783
|
+
* When true (default), input is processed by the assistant for a response.
|
|
11784
|
+
* When false, the input text is forwarded directly as the SMS message without LLM processing.
|
|
11785
|
+
* Useful for sending pre-defined messages or notifications.
|
|
11786
|
+
* @default true
|
|
11787
|
+
*/
|
|
11788
|
+
useLLMGeneratedMessageForOutbound?: boolean;
|
|
11789
|
+
/**
|
|
11790
|
+
* The type of transport to use for sending the chat response.
|
|
11791
|
+
* Currently supports 'twilio.sms' for SMS delivery via Twilio.
|
|
11792
|
+
*/
|
|
11793
|
+
type: "twilio.sms";
|
|
11794
|
+
}
|
|
11575
11795
|
export interface CreateChatDTO {
|
|
11576
11796
|
/** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */
|
|
11577
11797
|
assistantId?: string;
|
|
@@ -11582,6 +11802,10 @@ export interface CreateChatDTO {
|
|
|
11582
11802
|
* Only variable substitution is supported in chat contexts - other assistant properties cannot be overridden.
|
|
11583
11803
|
*/
|
|
11584
11804
|
assistantOverrides?: AssistantOverrides;
|
|
11805
|
+
/** This is the squad that will be used for the chat. To use a transient squad, use `squad` instead. */
|
|
11806
|
+
squadId?: string;
|
|
11807
|
+
/** This is the squad that will be used for the chat. To use an existing squad, use `squadId` instead. */
|
|
11808
|
+
squad?: CreateSquadDTO;
|
|
11585
11809
|
/**
|
|
11586
11810
|
* This is the name of the chat. This is just for your own reference.
|
|
11587
11811
|
* @maxLength 40
|
|
@@ -11610,10 +11834,19 @@ export interface CreateChatDTO {
|
|
|
11610
11834
|
* Mutually exclusive with sessionId.
|
|
11611
11835
|
*/
|
|
11612
11836
|
previousChatId?: string;
|
|
11837
|
+
/**
|
|
11838
|
+
* This is used to send the chat through a transport like SMS.
|
|
11839
|
+
* If transport.phoneNumberId and transport.customer are provided, creates a new session.
|
|
11840
|
+
* If sessionId is provided without transport fields, uses existing session data.
|
|
11841
|
+
* Cannot specify both sessionId and transport fields (phoneNumberId/customer) together.
|
|
11842
|
+
*/
|
|
11843
|
+
transport?: TwilioSMSChatTransport;
|
|
11613
11844
|
}
|
|
11614
11845
|
export interface GetChatPaginatedDTO {
|
|
11615
11846
|
/** This is the unique identifier for the assistant that will be used for the chat. */
|
|
11616
11847
|
assistantId?: string;
|
|
11848
|
+
/** This is the unique identifier for the squad that will be used for the chat. */
|
|
11849
|
+
squadId?: string;
|
|
11617
11850
|
/** This is the unique identifier for the workflow that will be used for the chat. */
|
|
11618
11851
|
workflowId?: string;
|
|
11619
11852
|
/** This is the unique identifier for the session that will be used for the chat. */
|
|
@@ -11703,6 +11936,10 @@ export interface OpenAIResponsesRequest {
|
|
|
11703
11936
|
* Only variable substitution is supported in chat contexts - other assistant properties cannot be overridden.
|
|
11704
11937
|
*/
|
|
11705
11938
|
assistantOverrides?: AssistantOverrides;
|
|
11939
|
+
/** This is the squad that will be used for the chat. To use a transient squad, use `squad` instead. */
|
|
11940
|
+
squadId?: string;
|
|
11941
|
+
/** This is the squad that will be used for the chat. To use an existing squad, use `squadId` instead. */
|
|
11942
|
+
squad?: CreateSquadDTO;
|
|
11706
11943
|
/**
|
|
11707
11944
|
* This is the name of the chat. This is just for your own reference.
|
|
11708
11945
|
* @maxLength 40
|
|
@@ -11730,6 +11967,13 @@ export interface OpenAIResponsesRequest {
|
|
|
11730
11967
|
* Mutually exclusive with sessionId.
|
|
11731
11968
|
*/
|
|
11732
11969
|
previousChatId?: string;
|
|
11970
|
+
/**
|
|
11971
|
+
* This is used to send the chat through a transport like SMS.
|
|
11972
|
+
* If transport.phoneNumberId and transport.customer are provided, creates a new session.
|
|
11973
|
+
* If sessionId is provided without transport fields, uses existing session data.
|
|
11974
|
+
* Cannot specify both sessionId and transport fields (phoneNumberId/customer) together.
|
|
11975
|
+
*/
|
|
11976
|
+
transport?: TwilioSMSChatTransport;
|
|
11733
11977
|
}
|
|
11734
11978
|
export interface ChatAssistantOverrides {
|
|
11735
11979
|
/**
|
|
@@ -12107,6 +12351,13 @@ export interface Session {
|
|
|
12107
12351
|
* If assistantId is provided, this will be ignored.
|
|
12108
12352
|
*/
|
|
12109
12353
|
assistant?: CreateAssistantDTO;
|
|
12354
|
+
/** This is the squad ID associated with this session. Use this when referencing an existing squad. */
|
|
12355
|
+
squadId?: string;
|
|
12356
|
+
/**
|
|
12357
|
+
* This is the squad configuration for this session. Use this when creating a new squad configuration.
|
|
12358
|
+
* If squadId is provided, this will be ignored.
|
|
12359
|
+
*/
|
|
12360
|
+
squad?: CreateSquadDTO;
|
|
12110
12361
|
/** This is an array of chat messages in the session. */
|
|
12111
12362
|
messages?: (SystemMessage | UserMessage | AssistantMessage | ToolMessage | DeveloperMessage)[];
|
|
12112
12363
|
/** This is the customer information associated with this session. */
|
|
@@ -12138,6 +12389,13 @@ export interface CreateSessionDTO {
|
|
|
12138
12389
|
* If assistantId is provided, this will be ignored.
|
|
12139
12390
|
*/
|
|
12140
12391
|
assistant?: CreateAssistantDTO;
|
|
12392
|
+
/** This is the squad ID associated with this session. Use this when referencing an existing squad. */
|
|
12393
|
+
squadId?: string;
|
|
12394
|
+
/**
|
|
12395
|
+
* This is the squad configuration for this session. Use this when creating a new squad configuration.
|
|
12396
|
+
* If squadId is provided, this will be ignored.
|
|
12397
|
+
*/
|
|
12398
|
+
squad?: CreateSquadDTO;
|
|
12141
12399
|
/** This is an array of chat messages in the session. */
|
|
12142
12400
|
messages?: (SystemMessage | UserMessage | AssistantMessage | ToolMessage | DeveloperMessage)[];
|
|
12143
12401
|
/** This is the customer information associated with this session. */
|
|
@@ -12170,6 +12428,8 @@ export interface GetSessionPaginatedDTO {
|
|
|
12170
12428
|
name?: string;
|
|
12171
12429
|
/** This is the ID of the assistant to filter sessions by. */
|
|
12172
12430
|
assistantId?: string;
|
|
12431
|
+
/** This is the ID of the squad to filter sessions by. */
|
|
12432
|
+
squadId?: string;
|
|
12173
12433
|
/** This is the ID of the workflow to filter sessions by. */
|
|
12174
12434
|
workflowId?: string;
|
|
12175
12435
|
/**
|
|
@@ -20364,15 +20624,747 @@ export interface UpdateTestSuiteRunDto {
|
|
|
20364
20624
|
*/
|
|
20365
20625
|
name?: string;
|
|
20366
20626
|
}
|
|
20367
|
-
export interface
|
|
20627
|
+
export interface CreateEvalDTO {
|
|
20368
20628
|
/**
|
|
20369
|
-
*
|
|
20370
|
-
*
|
|
20371
|
-
*
|
|
20372
|
-
*
|
|
20629
|
+
* This is the mock conversation that will be used to evaluate the flow of the conversation.
|
|
20630
|
+
*
|
|
20631
|
+
* Mock Messages are used to simulate the flow of the conversation
|
|
20632
|
+
*
|
|
20633
|
+
* Evaluation Messages are used as checkpoints in the flow where the model's response to previous conversation needs to be evaluated to check the content and tool calls
|
|
20634
|
+
* @example "[{ role: "user", content: "Hello, how are you?" }, { role: "assistant", judgePlan: { type: "exact", content: "I am good, thank you!" } }]"
|
|
20373
20635
|
*/
|
|
20374
|
-
|
|
20375
|
-
/**
|
|
20636
|
+
messages: (ChatEvalAssistantMessageMock | ChatEvalSystemMessageMock | ChatEvalToolResponseMessageMock | ChatEvalUserMessageMock | ChatEvalAssistantMessageEvaluation)[];
|
|
20637
|
+
/**
|
|
20638
|
+
* This is the name of the eval.
|
|
20639
|
+
* It helps identify what the eval is checking for.
|
|
20640
|
+
* @minLength 1
|
|
20641
|
+
* @maxLength 80
|
|
20642
|
+
* @example "Verified User Flow Eval"
|
|
20643
|
+
*/
|
|
20644
|
+
name?: string;
|
|
20645
|
+
/**
|
|
20646
|
+
* This is the description of the eval.
|
|
20647
|
+
* This helps describe the eval and its purpose in detail. It will not be used to evaluate the flow of the conversation.
|
|
20648
|
+
* @minLength 1
|
|
20649
|
+
* @maxLength 500
|
|
20650
|
+
* @example "This eval checks if the user flow is verified."
|
|
20651
|
+
*/
|
|
20652
|
+
description?: string;
|
|
20653
|
+
/**
|
|
20654
|
+
* This is the type of the eval.
|
|
20655
|
+
* Currently it is fixed to `chat.mockConversation`.
|
|
20656
|
+
* @example "chat.mockConversation"
|
|
20657
|
+
*/
|
|
20658
|
+
type: "chat.mockConversation";
|
|
20659
|
+
}
|
|
20660
|
+
export interface Eval {
|
|
20661
|
+
/**
|
|
20662
|
+
* This is the mock conversation that will be used to evaluate the flow of the conversation.
|
|
20663
|
+
*
|
|
20664
|
+
* Mock Messages are used to simulate the flow of the conversation
|
|
20665
|
+
*
|
|
20666
|
+
* Evaluation Messages are used as checkpoints in the flow where the model's response to previous conversation needs to be evaluated to check the content and tool calls
|
|
20667
|
+
* @example "[{ role: "user", content: "Hello, how are you?" }, { role: "assistant", judgePlan: { type: "exact", content: "I am good, thank you!" } }]"
|
|
20668
|
+
*/
|
|
20669
|
+
messages: (ChatEvalAssistantMessageMock | ChatEvalSystemMessageMock | ChatEvalToolResponseMessageMock | ChatEvalUserMessageMock | ChatEvalAssistantMessageEvaluation)[];
|
|
20670
|
+
id: string;
|
|
20671
|
+
orgId: string;
|
|
20672
|
+
/** @format date-time */
|
|
20673
|
+
createdAt: string;
|
|
20674
|
+
/** @format date-time */
|
|
20675
|
+
updatedAt: string;
|
|
20676
|
+
/**
|
|
20677
|
+
* This is the name of the eval.
|
|
20678
|
+
* It helps identify what the eval is checking for.
|
|
20679
|
+
* @minLength 1
|
|
20680
|
+
* @maxLength 80
|
|
20681
|
+
* @example "Verified User Flow Eval"
|
|
20682
|
+
*/
|
|
20683
|
+
name?: string;
|
|
20684
|
+
/**
|
|
20685
|
+
* This is the description of the eval.
|
|
20686
|
+
* This helps describe the eval and its purpose in detail. It will not be used to evaluate the flow of the conversation.
|
|
20687
|
+
* @minLength 1
|
|
20688
|
+
* @maxLength 500
|
|
20689
|
+
* @example "This eval checks if the user flow is verified."
|
|
20690
|
+
*/
|
|
20691
|
+
description?: string;
|
|
20692
|
+
/**
|
|
20693
|
+
* This is the type of the eval.
|
|
20694
|
+
* Currently it is fixed to `chat.mockConversation`.
|
|
20695
|
+
* @example "chat.mockConversation"
|
|
20696
|
+
*/
|
|
20697
|
+
type: "chat.mockConversation";
|
|
20698
|
+
}
|
|
20699
|
+
export interface EvalModelListOptions {
|
|
20700
|
+
/** This is the provider of the model. */
|
|
20701
|
+
provider: "openai" | "anthropic" | "google" | "groq" | "custom-llm";
|
|
20702
|
+
}
|
|
20703
|
+
export interface EvalUserEditable {
|
|
20704
|
+
/**
|
|
20705
|
+
* This is the mock conversation that will be used to evaluate the flow of the conversation.
|
|
20706
|
+
*
|
|
20707
|
+
* Mock Messages are used to simulate the flow of the conversation
|
|
20708
|
+
*
|
|
20709
|
+
* Evaluation Messages are used as checkpoints in the flow where the model's response to previous conversation needs to be evaluated to check the content and tool calls
|
|
20710
|
+
* @example "[{ role: "user", content: "Hello, how are you?" }, { role: "assistant", judgePlan: { type: "exact", content: "I am good, thank you!" } }]"
|
|
20711
|
+
*/
|
|
20712
|
+
messages: (ChatEvalAssistantMessageMock | ChatEvalSystemMessageMock | ChatEvalToolResponseMessageMock | ChatEvalUserMessageMock | ChatEvalAssistantMessageEvaluation)[];
|
|
20713
|
+
/**
|
|
20714
|
+
* This is the name of the eval.
|
|
20715
|
+
* It helps identify what the eval is checking for.
|
|
20716
|
+
* @minLength 1
|
|
20717
|
+
* @maxLength 80
|
|
20718
|
+
* @example "Verified User Flow Eval"
|
|
20719
|
+
*/
|
|
20720
|
+
name?: string;
|
|
20721
|
+
/**
|
|
20722
|
+
* This is the description of the eval.
|
|
20723
|
+
* This helps describe the eval and its purpose in detail. It will not be used to evaluate the flow of the conversation.
|
|
20724
|
+
* @minLength 1
|
|
20725
|
+
* @maxLength 500
|
|
20726
|
+
* @example "This eval checks if the user flow is verified."
|
|
20727
|
+
*/
|
|
20728
|
+
description?: string;
|
|
20729
|
+
/**
|
|
20730
|
+
* This is the type of the eval.
|
|
20731
|
+
* Currently it is fixed to `chat.mockConversation`.
|
|
20732
|
+
* @example "chat.mockConversation"
|
|
20733
|
+
*/
|
|
20734
|
+
type: "chat.mockConversation";
|
|
20735
|
+
}
|
|
20736
|
+
export interface ChatEvalAssistantMessageMockToolCall {
|
|
20737
|
+
/**
|
|
20738
|
+
* This is the name of the tool that will be called.
|
|
20739
|
+
* It should be one of the tools created in the organization.
|
|
20740
|
+
* @maxLength 100
|
|
20741
|
+
* @example "get_weather"
|
|
20742
|
+
*/
|
|
20743
|
+
name: string;
|
|
20744
|
+
/**
|
|
20745
|
+
* This is the arguments that will be passed to the tool call.
|
|
20746
|
+
* @example ""{"city": "San Francisco"}""
|
|
20747
|
+
*/
|
|
20748
|
+
arguments?: object;
|
|
20749
|
+
}
|
|
20750
|
+
export interface ChatEvalAssistantMessageMock {
|
|
20751
|
+
/**
|
|
20752
|
+
* This is the role of the message author.
|
|
20753
|
+
* For a mock assistant message, the role is always 'assistant'
|
|
20754
|
+
* @default 'assistant'
|
|
20755
|
+
* @default "assistant"
|
|
20756
|
+
*/
|
|
20757
|
+
role: "assistant";
|
|
20758
|
+
/**
|
|
20759
|
+
* This is the content of the assistant message.
|
|
20760
|
+
* This is the message that the assistant would have sent.
|
|
20761
|
+
* @maxLength 1000
|
|
20762
|
+
* @example "The weather in San Francisco is sunny."
|
|
20763
|
+
*/
|
|
20764
|
+
content?: string;
|
|
20765
|
+
/**
|
|
20766
|
+
* This is the tool calls that will be made by the assistant.
|
|
20767
|
+
* @example "[{ name: "get_weather", arguments: { city: "San Francisco" } }]"
|
|
20768
|
+
*/
|
|
20769
|
+
toolCalls?: ChatEvalAssistantMessageMockToolCall[];
|
|
20770
|
+
}
|
|
20771
|
+
export interface ChatEvalSystemMessageMock {
|
|
20772
|
+
/**
|
|
20773
|
+
* This is the role of the message author.
|
|
20774
|
+
* For a mock system message, the role is always 'system'
|
|
20775
|
+
* @default 'system'
|
|
20776
|
+
* @default "system"
|
|
20777
|
+
*/
|
|
20778
|
+
role: "system";
|
|
20779
|
+
/**
|
|
20780
|
+
* This is the content of the system message that would have been added in the middle of the conversation.
|
|
20781
|
+
* Do not include the assistant prompt as a part of this message. It will automatically be fetched during runtime.
|
|
20782
|
+
* @maxLength 100000000
|
|
20783
|
+
* @example "You are a helpful assistant."
|
|
20784
|
+
*/
|
|
20785
|
+
content: string;
|
|
20786
|
+
}
|
|
20787
|
+
export interface ChatEvalToolResponseMessageMock {
|
|
20788
|
+
/**
|
|
20789
|
+
* This is the role of the message author.
|
|
20790
|
+
* For a mock tool response message, the role is always 'tool'
|
|
20791
|
+
* @default 'tool'
|
|
20792
|
+
* @default "tool"
|
|
20793
|
+
*/
|
|
20794
|
+
role: "tool";
|
|
20795
|
+
/**
|
|
20796
|
+
* This is the content of the tool response message. JSON Objects should be stringified.
|
|
20797
|
+
* @maxLength 1000
|
|
20798
|
+
*/
|
|
20799
|
+
content: string;
|
|
20800
|
+
}
|
|
20801
|
+
export interface ChatEvalUserMessageMock {
|
|
20802
|
+
/**
|
|
20803
|
+
* This is the role of the message author.
|
|
20804
|
+
* For a mock user message, the role is always 'user'
|
|
20805
|
+
* @default 'user'
|
|
20806
|
+
* @default "user"
|
|
20807
|
+
*/
|
|
20808
|
+
role: "user";
|
|
20809
|
+
/**
|
|
20810
|
+
* This is the content of the user message.
|
|
20811
|
+
* This is the message that the user would have sent.
|
|
20812
|
+
* @maxLength 1000
|
|
20813
|
+
* @example "Hello, how are you?"
|
|
20814
|
+
*/
|
|
20815
|
+
content: string;
|
|
20816
|
+
}
|
|
20817
|
+
export interface AssistantMessageEvaluationContinuePlan {
|
|
20818
|
+
/**
|
|
20819
|
+
* This is whether the evaluation should exit if the assistant message evaluates to false.
|
|
20820
|
+
* By default, it is false and the evaluation will continue.
|
|
20821
|
+
* @default false
|
|
20822
|
+
*/
|
|
20823
|
+
exitOnFailureEnabled?: boolean;
|
|
20824
|
+
/**
|
|
20825
|
+
* This is the content that will be used in the conversation for this assistant turn moving forward if provided.
|
|
20826
|
+
* It will override the content received from the model.
|
|
20827
|
+
* @maxLength 1000
|
|
20828
|
+
* @example "The weather in San Francisco is sunny."
|
|
20829
|
+
*/
|
|
20830
|
+
contentOverride?: string;
|
|
20831
|
+
/**
|
|
20832
|
+
* This is the tool calls that will be used in the conversation for this assistant turn moving forward if provided.
|
|
20833
|
+
* It will override the tool calls received from the model.
|
|
20834
|
+
* @example "[{ name: "get_weather", arguments: { city: "San Francisco" } }]"
|
|
20835
|
+
*/
|
|
20836
|
+
toolCallsOverride?: ChatEvalAssistantMessageMockToolCall[];
|
|
20837
|
+
}
|
|
20838
|
+
export interface ChatEvalAssistantMessageEvaluation {
|
|
20839
|
+
/**
|
|
20840
|
+
* This is the role of the message author.
|
|
20841
|
+
* For an assistant message evaluation, the role is always 'assistant'
|
|
20842
|
+
* @default 'assistant'
|
|
20843
|
+
* @default "assistant"
|
|
20844
|
+
*/
|
|
20845
|
+
role: "assistant";
|
|
20846
|
+
/**
|
|
20847
|
+
* This is the judge plan that instructs how to evaluate the assistant message.
|
|
20848
|
+
* The assistant message can be evaluated against fixed content (exact match or RegEx) or with an LLM-as-judge by defining the evaluation criteria in a prompt.
|
|
20849
|
+
*/
|
|
20850
|
+
judgePlan: AssistantMessageJudgePlanExact | AssistantMessageJudgePlanRegex | AssistantMessageJudgePlanAI;
|
|
20851
|
+
/**
|
|
20852
|
+
* This is the plan for how the overall evaluation will proceed after the assistant message is evaluated.
|
|
20853
|
+
* This lets you configure whether to stop the evaluation if this message fails, and whether to override any content for future turns
|
|
20854
|
+
*/
|
|
20855
|
+
continuePlan?: AssistantMessageEvaluationContinuePlan;
|
|
20856
|
+
}
|
|
20857
|
+
export interface AssistantMessageJudgePlanExact {
|
|
20858
|
+
/**
|
|
20859
|
+
* This is the type of the judge plan.
|
|
20860
|
+
* Use 'exact' for an exact match on the content and tool calls - without using LLM-as-a-judge.
|
|
20861
|
+
* @default 'exact'
|
|
20862
|
+
*/
|
|
20863
|
+
type: "exact";
|
|
20864
|
+
/**
|
|
20865
|
+
* This is what that will be used to evaluate the model's message content.
|
|
20866
|
+
* If you provide a string, the assistant message content will be evaluated against it as an exact match, case-insensitive.
|
|
20867
|
+
* @maxLength 1000
|
|
20868
|
+
* @example "The weather in San Francisco is sunny."
|
|
20869
|
+
*/
|
|
20870
|
+
content: string;
|
|
20871
|
+
/**
|
|
20872
|
+
* This is the tool calls that will be used to evaluate the model's message content.
|
|
20873
|
+
* The tool name must be a valid tool that the assistant is allowed to call.
|
|
20874
|
+
*
|
|
20875
|
+
* For the Query tool, the arguments for the tool call are in the format - {knowledgeBaseNames: ['kb_name', 'kb_name_2']}
|
|
20876
|
+
*
|
|
20877
|
+
* For the DTMF tool, the arguments for the tool call are in the format - {dtmf: "1234*"}
|
|
20878
|
+
*
|
|
20879
|
+
* For the Handoff tool, the arguments for the tool call are in the format - {destination: "assistant_id"}
|
|
20880
|
+
*
|
|
20881
|
+
* For the Transfer Call tool, the arguments for the tool call are in the format - {destination: "phone_number_or_assistant_id"}
|
|
20882
|
+
*
|
|
20883
|
+
* For all other tools, they are called without arguments or with user-defined arguments
|
|
20884
|
+
* @example "[{ name: "get_weather", arguments: { city: "San Francisco" } }]"
|
|
20885
|
+
*/
|
|
20886
|
+
toolCalls?: ChatEvalAssistantMessageMockToolCall[];
|
|
20887
|
+
}
|
|
20888
|
+
export interface EvalOpenAIModel {
|
|
20889
|
+
/** This is the provider of the model (`openai`). */
|
|
20890
|
+
provider: "openai";
|
|
20891
|
+
/**
|
|
20892
|
+
* This is the OpenAI model that will be used.
|
|
20893
|
+
*
|
|
20894
|
+
* When using Vapi OpenAI or your own Azure Credentials, you have the option to specify the region for the selected model. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest region that make sense.
|
|
20895
|
+
* This is helpful when you are required to comply with Data Residency rules. Learn more about Azure regions here https://azure.microsoft.com/en-us/explore/global-infrastructure/data-residency/.
|
|
20896
|
+
* @maxLength 100
|
|
20897
|
+
*/
|
|
20898
|
+
model: "gpt-5" | "gpt-5-mini" | "gpt-5-nano" | "gpt-4.1-2025-04-14" | "gpt-4.1-mini-2025-04-14" | "gpt-4.1-nano-2025-04-14" | "gpt-4.1" | "gpt-4.1-mini" | "gpt-4.1-nano" | "chatgpt-4o-latest" | "o3" | "o3-mini" | "o4-mini" | "o1-mini" | "o1-mini-2024-09-12" | "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" | "gpt-4.1-2025-04-14:westus" | "gpt-4.1-2025-04-14:eastus2" | "gpt-4.1-2025-04-14:eastus" | "gpt-4.1-2025-04-14:westus3" | "gpt-4.1-2025-04-14:northcentralus" | "gpt-4.1-2025-04-14:southcentralus" | "gpt-4.1-mini-2025-04-14:westus" | "gpt-4.1-mini-2025-04-14:eastus2" | "gpt-4.1-mini-2025-04-14:eastus" | "gpt-4.1-mini-2025-04-14:westus3" | "gpt-4.1-mini-2025-04-14:northcentralus" | "gpt-4.1-mini-2025-04-14:southcentralus" | "gpt-4.1-nano-2025-04-14:westus" | "gpt-4.1-nano-2025-04-14:eastus2" | "gpt-4.1-nano-2025-04-14:westus3" | "gpt-4.1-nano-2025-04-14:northcentralus" | "gpt-4.1-nano-2025-04-14:southcentralus" | "gpt-4o-2024-11-20:swedencentral" | "gpt-4o-2024-11-20:westus" | "gpt-4o-2024-11-20:eastus2" | "gpt-4o-2024-11-20:eastus" | "gpt-4o-2024-11-20:westus3" | "gpt-4o-2024-11-20:southcentralus" | "gpt-4o-2024-08-06:westus" | "gpt-4o-2024-08-06:westus3" | "gpt-4o-2024-08-06:eastus" | "gpt-4o-2024-08-06:eastus2" | "gpt-4o-2024-08-06:northcentralus" | "gpt-4o-2024-08-06:southcentralus" | "gpt-4o-mini-2024-07-18:westus" | "gpt-4o-mini-2024-07-18:westus3" | "gpt-4o-mini-2024-07-18:eastus" | "gpt-4o-mini-2024-07-18:eastus2" | "gpt-4o-mini-2024-07-18:northcentralus" | "gpt-4o-mini-2024-07-18:southcentralus" | "gpt-4o-2024-05-13:eastus2" | "gpt-4o-2024-05-13:eastus" | "gpt-4o-2024-05-13:northcentralus" | "gpt-4o-2024-05-13:southcentralus" | "gpt-4o-2024-05-13:westus3" | "gpt-4o-2024-05-13:westus" | "gpt-4-turbo-2024-04-09:eastus2" | "gpt-4-0125-preview:eastus" | "gpt-4-0125-preview:northcentralus" | "gpt-4-0125-preview:southcentralus" | "gpt-4-1106-preview:australia" | "gpt-4-1106-preview:canadaeast" | "gpt-4-1106-preview:france" | "gpt-4-1106-preview:india" | "gpt-4-1106-preview:norway" | "gpt-4-1106-preview:swedencentral" | "gpt-4-1106-preview:uk" | "gpt-4-1106-preview:westus" | "gpt-4-1106-preview:westus3" | "gpt-4-0613:canadaeast" | "gpt-3.5-turbo-0125:canadaeast" | "gpt-3.5-turbo-0125:northcentralus" | "gpt-3.5-turbo-0125:southcentralus" | "gpt-3.5-turbo-1106:canadaeast" | "gpt-3.5-turbo-1106:westus";
|
|
20899
|
+
/**
|
|
20900
|
+
* This is the temperature of the model. For LLM-as-a-judge, it's recommended to set it between 0 - 0.3 to avoid hallucinations and ensure the model judges the output correctly based on the instructions.
|
|
20901
|
+
* @min 0
|
|
20902
|
+
* @max 2
|
|
20903
|
+
*/
|
|
20904
|
+
temperature?: number;
|
|
20905
|
+
/**
|
|
20906
|
+
* This is the max tokens of the model.
|
|
20907
|
+
* If your Judge instructions return `true` or `false` takes only 1 token (as per the OpenAI Tokenizer), and therefore is recommended to set it to a low number to force the model to return a short response.
|
|
20908
|
+
* @min 50
|
|
20909
|
+
* @max 10000
|
|
20910
|
+
*/
|
|
20911
|
+
maxTokens?: number;
|
|
20912
|
+
}
|
|
20913
|
+
export interface EvalAnthropicModel {
|
|
20914
|
+
/** This is the provider of the model (`anthropic`). */
|
|
20915
|
+
provider: "anthropic";
|
|
20916
|
+
/**
|
|
20917
|
+
* This is the specific model that will be used.
|
|
20918
|
+
* @maxLength 100
|
|
20919
|
+
*/
|
|
20920
|
+
model: "claude-3-opus-20240229" | "claude-3-sonnet-20240229" | "claude-3-haiku-20240307" | "claude-3-5-sonnet-20240620" | "claude-3-5-sonnet-20241022" | "claude-3-5-haiku-20241022" | "claude-3-7-sonnet-20250219" | "claude-opus-4-20250514" | "claude-sonnet-4-20250514";
|
|
20921
|
+
/**
|
|
20922
|
+
* This is the optional configuration for Anthropic's thinking feature.
|
|
20923
|
+
*
|
|
20924
|
+
* - Only applicable for `claude-3-7-sonnet-20250219` model.
|
|
20925
|
+
* - If provided, `maxTokens` must be greater than `thinking.budgetTokens`.
|
|
20926
|
+
*/
|
|
20927
|
+
thinking?: AnthropicThinkingConfig;
|
|
20928
|
+
/**
|
|
20929
|
+
* This is the temperature of the model. For LLM-as-a-judge, it's recommended to set it between 0 - 0.3 to avoid hallucinations and ensure the model judges the output correctly based on the instructions.
|
|
20930
|
+
* @min 0
|
|
20931
|
+
* @max 2
|
|
20932
|
+
*/
|
|
20933
|
+
temperature?: number;
|
|
20934
|
+
/**
|
|
20935
|
+
* This is the max tokens of the model.
|
|
20936
|
+
* If your Judge instructions return `true` or `false` takes only 1 token (as per the OpenAI Tokenizer), and therefore is recommended to set it to a low number to force the model to return a short response.
|
|
20937
|
+
* @min 50
|
|
20938
|
+
* @max 10000
|
|
20939
|
+
*/
|
|
20940
|
+
maxTokens?: number;
|
|
20941
|
+
}
|
|
20942
|
+
export interface EvalGoogleModel {
|
|
20943
|
+
/** This is the provider of the model (`google`). */
|
|
20944
|
+
provider: "google";
|
|
20945
|
+
/**
|
|
20946
|
+
* This is the name of the model. Ex. gpt-4o
|
|
20947
|
+
* @maxLength 100
|
|
20948
|
+
*/
|
|
20949
|
+
model: "gemini-2.5-pro" | "gemini-2.5-flash" | "gemini-2.5-flash-lite" | "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-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";
|
|
20950
|
+
/**
|
|
20951
|
+
* This is the temperature of the model. For LLM-as-a-judge, it's recommended to set it between 0 - 0.3 to avoid hallucinations and ensure the model judges the output correctly based on the instructions.
|
|
20952
|
+
* @min 0
|
|
20953
|
+
* @max 2
|
|
20954
|
+
*/
|
|
20955
|
+
temperature?: number;
|
|
20956
|
+
/**
|
|
20957
|
+
* This is the max tokens of the model.
|
|
20958
|
+
* If your Judge instructions return `true` or `false` takes only 1 token (as per the OpenAI Tokenizer), and therefore is recommended to set it to a low number to force the model to return a short response.
|
|
20959
|
+
* @min 50
|
|
20960
|
+
* @max 10000
|
|
20961
|
+
*/
|
|
20962
|
+
maxTokens?: number;
|
|
20963
|
+
}
|
|
20964
|
+
export interface EvalGroqModel {
|
|
20965
|
+
/** This is the provider of the model (`groq`). */
|
|
20966
|
+
provider: "groq";
|
|
20967
|
+
/**
|
|
20968
|
+
* This is the name of the model. Ex. gpt-4o
|
|
20969
|
+
* @maxLength 100
|
|
20970
|
+
*/
|
|
20971
|
+
model: "openai/gpt-oss-20b" | "openai/gpt-oss-120b" | "deepseek-r1-distill-llama-70b" | "llama-3.3-70b-versatile" | "llama-3.1-405b-reasoning" | "llama-3.1-8b-instant" | "llama3-8b-8192" | "llama3-70b-8192" | "gemma2-9b-it" | "moonshotai/kimi-k2-instruct-0905" | "meta-llama/llama-4-maverick-17b-128e-instruct" | "meta-llama/llama-4-scout-17b-16e-instruct" | "mistral-saba-24b" | "compound-beta" | "compound-beta-mini";
|
|
20972
|
+
/**
|
|
20973
|
+
* This is the temperature of the model. For LLM-as-a-judge, it's recommended to set it between 0 - 0.3 to avoid hallucinations and ensure the model judges the output correctly based on the instructions.
|
|
20974
|
+
* @min 0
|
|
20975
|
+
* @max 2
|
|
20976
|
+
*/
|
|
20977
|
+
temperature?: number;
|
|
20978
|
+
/**
|
|
20979
|
+
* This is the max tokens of the model.
|
|
20980
|
+
* If your Judge instructions return `true` or `false` takes only 1 token (as per the OpenAI Tokenizer), and therefore is recommended to set it to a low number to force the model to return a short response.
|
|
20981
|
+
* @min 50
|
|
20982
|
+
* @max 10000
|
|
20983
|
+
*/
|
|
20984
|
+
maxTokens?: number;
|
|
20985
|
+
}
|
|
20986
|
+
export interface EvalCustomModel {
|
|
20987
|
+
/** This is the provider of the model (`custom-llm`). */
|
|
20988
|
+
provider: "custom-llm";
|
|
20989
|
+
/** These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1 */
|
|
20990
|
+
url: string;
|
|
20991
|
+
/** These are the headers we'll use for the OpenAI client's `headers`. */
|
|
20992
|
+
headers?: object;
|
|
20993
|
+
/**
|
|
20994
|
+
* This sets the timeout for the connection to the custom provider without needing to stream any tokens back. Default is 20 seconds.
|
|
20995
|
+
* @min 20
|
|
20996
|
+
* @max 600
|
|
20997
|
+
*/
|
|
20998
|
+
timeoutSeconds?: number;
|
|
20999
|
+
/**
|
|
21000
|
+
* This is the name of the model. Ex. gpt-4o
|
|
21001
|
+
* @maxLength 100
|
|
21002
|
+
*/
|
|
21003
|
+
model: string;
|
|
21004
|
+
/**
|
|
21005
|
+
* This is the temperature of the model. For LLM-as-a-judge, it's recommended to set it between 0 - 0.3 to avoid hallucinations and ensure the model judges the output correctly based on the instructions.
|
|
21006
|
+
* @min 0
|
|
21007
|
+
* @max 2
|
|
21008
|
+
*/
|
|
21009
|
+
temperature?: number;
|
|
21010
|
+
/**
|
|
21011
|
+
* This is the max tokens of the model.
|
|
21012
|
+
* If your Judge instructions return `true` or `false` takes only 1 token (as per the OpenAI Tokenizer), and therefore is recommended to set it to a low number to force the model to return a short response.
|
|
21013
|
+
* @min 50
|
|
21014
|
+
* @max 10000
|
|
21015
|
+
*/
|
|
21016
|
+
maxTokens?: number;
|
|
21017
|
+
}
|
|
21018
|
+
export interface AssistantMessageJudgePlanAI {
|
|
21019
|
+
/**
|
|
21020
|
+
* This is the model to use for the LLM-as-a-judge.
|
|
21021
|
+
* If not provided, will default to the assistant's model.
|
|
21022
|
+
*
|
|
21023
|
+
* The instructions on how to evaluate the model output with this LLM-Judge must be passed as a system message in the messages array of the model.
|
|
21024
|
+
*
|
|
21025
|
+
* The Mock conversation can be passed to the LLM-Judge to evaluate using the prompt {{messages}} and will be evaluated as a LiquidJS Variable. To access and judge only the last message, use {{messages[-1]}}
|
|
21026
|
+
*
|
|
21027
|
+
* The LLM-Judge must respond with "pass" or "fail" and only those two responses are allowed.
|
|
21028
|
+
* @example "{"
|
|
21029
|
+
*/
|
|
21030
|
+
model: EvalOpenAIModel | EvalAnthropicModel | EvalGoogleModel | EvalCustomModel;
|
|
21031
|
+
/**
|
|
21032
|
+
* This is the type of the judge plan.
|
|
21033
|
+
* Use 'ai' to evaluate the assistant message content using LLM-as-a-judge.
|
|
21034
|
+
* @default 'ai'
|
|
21035
|
+
*/
|
|
21036
|
+
type: "ai";
|
|
21037
|
+
}
|
|
21038
|
+
export interface AssistantMessageJudgePlanRegex {
|
|
21039
|
+
/**
|
|
21040
|
+
* This is the type of the judge plan.
|
|
21041
|
+
* Use 'regex' for a regex match on the content and tool calls - without using LLM-as-a-judge.
|
|
21042
|
+
* @default 'regex'
|
|
21043
|
+
*/
|
|
21044
|
+
type: "regex";
|
|
21045
|
+
/**
|
|
21046
|
+
* This is what that will be used to evaluate the model's message content.
|
|
21047
|
+
* The content will be evaluated against the regex pattern provided in the Judge Plan content field.
|
|
21048
|
+
* Evaluation is considered successful if the regex pattern matches any part of the assistant message content.
|
|
21049
|
+
* @maxLength 1000
|
|
21050
|
+
* @example "/sunny/i"
|
|
21051
|
+
*/
|
|
21052
|
+
content: string;
|
|
21053
|
+
/**
|
|
21054
|
+
* This is the tool calls that will be used to evaluate the model's message content.
|
|
21055
|
+
* The tool name must be a valid tool that the assistant is allowed to call.
|
|
21056
|
+
* The values to the arguments for the tool call should be a Regular Expression.
|
|
21057
|
+
* Evaluation is considered successful if the regex pattern matches any part of each tool call argument.
|
|
21058
|
+
*
|
|
21059
|
+
* For the Query tool, the arguments for the tool call are in the format - {knowledgeBaseNames: ['kb_name', 'kb_name_2']}
|
|
21060
|
+
*
|
|
21061
|
+
* For the DTMF tool, the arguments for the tool call are in the format - {dtmf: "1234*"}
|
|
21062
|
+
*
|
|
21063
|
+
* For the Handoff tool, the arguments for the tool call are in the format - {destination: "assistant_id"}
|
|
21064
|
+
*
|
|
21065
|
+
* For the Transfer Call tool, the arguments for the tool call are in the format - {destination: "phone_number_or_assistant_id"}
|
|
21066
|
+
*
|
|
21067
|
+
* For all other tools, they are called without arguments or with user-defined arguments
|
|
21068
|
+
* @example "[{ name: "get_weather", arguments: { city: "/San Francisco/i" } }]"
|
|
21069
|
+
*/
|
|
21070
|
+
toolCalls?: ChatEvalAssistantMessageMockToolCall[];
|
|
21071
|
+
}
|
|
21072
|
+
export interface GetEvalPaginatedDTO {
|
|
21073
|
+
id?: string;
|
|
21074
|
+
/**
|
|
21075
|
+
* This is the page number to return. Defaults to 1.
|
|
21076
|
+
* @min 1
|
|
21077
|
+
*/
|
|
21078
|
+
page?: number;
|
|
21079
|
+
/** This is the sort order for pagination. Defaults to 'DESC'. */
|
|
21080
|
+
sortOrder?: "ASC" | "DESC";
|
|
21081
|
+
/**
|
|
21082
|
+
* This is the maximum number of items to return. Defaults to 100.
|
|
21083
|
+
* @min 0
|
|
21084
|
+
* @max 1000
|
|
21085
|
+
*/
|
|
21086
|
+
limit?: number;
|
|
21087
|
+
/**
|
|
21088
|
+
* This will return items where the createdAt is greater than the specified value.
|
|
21089
|
+
* @format date-time
|
|
21090
|
+
*/
|
|
21091
|
+
createdAtGt?: string;
|
|
21092
|
+
/**
|
|
21093
|
+
* This will return items where the createdAt is less than the specified value.
|
|
21094
|
+
* @format date-time
|
|
21095
|
+
*/
|
|
21096
|
+
createdAtLt?: string;
|
|
21097
|
+
/**
|
|
21098
|
+
* This will return items where the createdAt is greater than or equal to the specified value.
|
|
21099
|
+
* @format date-time
|
|
21100
|
+
*/
|
|
21101
|
+
createdAtGe?: string;
|
|
21102
|
+
/**
|
|
21103
|
+
* This will return items where the createdAt is less than or equal to the specified value.
|
|
21104
|
+
* @format date-time
|
|
21105
|
+
*/
|
|
21106
|
+
createdAtLe?: string;
|
|
21107
|
+
/**
|
|
21108
|
+
* This will return items where the updatedAt is greater than the specified value.
|
|
21109
|
+
* @format date-time
|
|
21110
|
+
*/
|
|
21111
|
+
updatedAtGt?: string;
|
|
21112
|
+
/**
|
|
21113
|
+
* This will return items where the updatedAt is less than the specified value.
|
|
21114
|
+
* @format date-time
|
|
21115
|
+
*/
|
|
21116
|
+
updatedAtLt?: string;
|
|
21117
|
+
/**
|
|
21118
|
+
* This will return items where the updatedAt is greater than or equal to the specified value.
|
|
21119
|
+
* @format date-time
|
|
21120
|
+
*/
|
|
21121
|
+
updatedAtGe?: string;
|
|
21122
|
+
/**
|
|
21123
|
+
* This will return items where the updatedAt is less than or equal to the specified value.
|
|
21124
|
+
* @format date-time
|
|
21125
|
+
*/
|
|
21126
|
+
updatedAtLe?: string;
|
|
21127
|
+
}
|
|
21128
|
+
export interface EvalPaginatedResponse {
|
|
21129
|
+
results: Eval[];
|
|
21130
|
+
metadata: PaginationMeta;
|
|
21131
|
+
}
|
|
21132
|
+
export interface UpdateEvalDTO {
|
|
21133
|
+
/**
|
|
21134
|
+
* This is the mock conversation that will be used to evaluate the flow of the conversation.
|
|
21135
|
+
*
|
|
21136
|
+
* Mock Messages are used to simulate the flow of the conversation
|
|
21137
|
+
*
|
|
21138
|
+
* Evaluation Messages are used as checkpoints in the flow where the model's response to previous conversation needs to be evaluated to check the content and tool calls
|
|
21139
|
+
* @example "[{ role: "user", content: "Hello, how are you?" }, { role: "assistant", judgePlan: { type: "exact", content: "I am good, thank you!" } }]"
|
|
21140
|
+
*/
|
|
21141
|
+
messages?: (ChatEvalAssistantMessageMock | ChatEvalSystemMessageMock | ChatEvalToolResponseMessageMock | ChatEvalUserMessageMock | ChatEvalAssistantMessageEvaluation)[];
|
|
21142
|
+
/**
|
|
21143
|
+
* This is the name of the eval.
|
|
21144
|
+
* It helps identify what the eval is checking for.
|
|
21145
|
+
* @minLength 1
|
|
21146
|
+
* @maxLength 80
|
|
21147
|
+
* @example "Verified User Flow Eval"
|
|
21148
|
+
*/
|
|
21149
|
+
name?: string;
|
|
21150
|
+
/**
|
|
21151
|
+
* This is the description of the eval.
|
|
21152
|
+
* This helps describe the eval and its purpose in detail. It will not be used to evaluate the flow of the conversation.
|
|
21153
|
+
* @minLength 1
|
|
21154
|
+
* @maxLength 500
|
|
21155
|
+
* @example "This eval checks if the user flow is verified."
|
|
21156
|
+
*/
|
|
21157
|
+
description?: string;
|
|
21158
|
+
/**
|
|
21159
|
+
* This is the type of the eval.
|
|
21160
|
+
* Currently it is fixed to `chat.mockConversation`.
|
|
21161
|
+
* @example "chat.mockConversation"
|
|
21162
|
+
*/
|
|
21163
|
+
type?: "chat.mockConversation";
|
|
21164
|
+
}
|
|
21165
|
+
export interface CreateEvalRunDTO {
|
|
21166
|
+
/** This is the transient eval that will be run */
|
|
21167
|
+
eval?: CreateEvalDTO;
|
|
21168
|
+
/** This is the target that will be run against the eval */
|
|
21169
|
+
target: EvalRunTargetAssistant | EvalRunTargetSquad;
|
|
21170
|
+
/**
|
|
21171
|
+
* This is the type of the run.
|
|
21172
|
+
* Currently it is fixed to `eval`.
|
|
21173
|
+
* @example "eval"
|
|
21174
|
+
*/
|
|
21175
|
+
type: "eval";
|
|
21176
|
+
/**
|
|
21177
|
+
* This is the id of the eval that will be run.
|
|
21178
|
+
* @example "123e4567-e89b-12d3-a456-426614174000"
|
|
21179
|
+
*/
|
|
21180
|
+
evalId?: string;
|
|
21181
|
+
}
|
|
21182
|
+
export interface EvalRunResult {
|
|
21183
|
+
/**
|
|
21184
|
+
* This is the status of the eval run result.
|
|
21185
|
+
* The status is only 'pass' or 'fail' for an eval run result.
|
|
21186
|
+
* Currently, An eval is considered `pass` only if all the Assistant Judge messages are evaluated to pass.
|
|
21187
|
+
* @example "pass"
|
|
21188
|
+
*/
|
|
21189
|
+
status: "pass" | "fail";
|
|
21190
|
+
/**
|
|
21191
|
+
* This is the messages of the eval run result.
|
|
21192
|
+
* It contains the user/system messages
|
|
21193
|
+
*/
|
|
21194
|
+
messages: (ChatEvalUserMessageMock | ChatEvalSystemMessageMock | ChatEvalToolResponseMessageMock | ChatEvalAssistantMessageMock)[];
|
|
21195
|
+
/**
|
|
21196
|
+
* This is the start time of the eval run result.
|
|
21197
|
+
* @format date-time
|
|
21198
|
+
* @example "2021-01-01T00:00:00.000Z"
|
|
21199
|
+
*/
|
|
21200
|
+
startedAt: string;
|
|
21201
|
+
/**
|
|
21202
|
+
* This is the end time of the eval run result.
|
|
21203
|
+
* @format date-time
|
|
21204
|
+
* @example "2021-01-01T00:00:00.000Z"
|
|
21205
|
+
*/
|
|
21206
|
+
endedAt: string;
|
|
21207
|
+
}
|
|
21208
|
+
export interface EvalRun {
|
|
21209
|
+
/**
|
|
21210
|
+
* This is the status of the eval run. When an eval run is created, the status is 'running'.
|
|
21211
|
+
* When the eval run is completed, the status is 'ended'.
|
|
21212
|
+
* @example "running"
|
|
21213
|
+
*/
|
|
21214
|
+
status: "running" | "ended" | "queued";
|
|
21215
|
+
/**
|
|
21216
|
+
* This is the reason for the eval run to end.
|
|
21217
|
+
* When the eval run is completed normally i.e end of mock conversation, the status is 'mockConversation.done'.
|
|
21218
|
+
* When the eval fails due to an error like Chat error or incorrect configuration, the status is 'error'.
|
|
21219
|
+
* When the eval runs for too long, due to model issues or tool call issues, the status is 'timeout'.
|
|
21220
|
+
* When the eval run is cancelled by the user, the status is 'cancelled'.
|
|
21221
|
+
* When the eval run is cancelled by Vapi for any reason, the status is 'aborted'.
|
|
21222
|
+
* @example "mockConversation.done"
|
|
21223
|
+
*/
|
|
21224
|
+
endedReason: "mockConversation.done" | "error" | "timeout" | "cancelled" | "aborted";
|
|
21225
|
+
/** This is the transient eval that will be run */
|
|
21226
|
+
eval?: CreateEvalDTO;
|
|
21227
|
+
/** This is the target that will be run against the eval */
|
|
21228
|
+
target: EvalRunTargetAssistant | EvalRunTargetSquad;
|
|
21229
|
+
id: string;
|
|
21230
|
+
orgId: string;
|
|
21231
|
+
/** @format date-time */
|
|
21232
|
+
createdAt: string;
|
|
21233
|
+
/** @format date-time */
|
|
21234
|
+
startedAt: string;
|
|
21235
|
+
/** @format date-time */
|
|
21236
|
+
endedAt: string;
|
|
21237
|
+
/**
|
|
21238
|
+
* This is the ended message when the eval run ended for any reason apart from mockConversation.done
|
|
21239
|
+
* @example "The Assistant returned an error"
|
|
21240
|
+
*/
|
|
21241
|
+
endedMessage?: string;
|
|
21242
|
+
/**
|
|
21243
|
+
* This is the results of the eval or suite run.
|
|
21244
|
+
* The array will have a single item for an eval run, and multiple items each corresponding to the an eval in a suite run in the same order as the evals in the suite.
|
|
21245
|
+
*/
|
|
21246
|
+
results: EvalRunResult[];
|
|
21247
|
+
/**
|
|
21248
|
+
* This is the type of the run.
|
|
21249
|
+
* Currently it is fixed to `eval`.
|
|
21250
|
+
* @example "eval"
|
|
21251
|
+
*/
|
|
21252
|
+
type: "eval";
|
|
21253
|
+
/**
|
|
21254
|
+
* This is the id of the eval that will be run.
|
|
21255
|
+
* @example "123e4567-e89b-12d3-a456-426614174000"
|
|
21256
|
+
*/
|
|
21257
|
+
evalId?: string;
|
|
21258
|
+
}
|
|
21259
|
+
export interface EvalRunPaginatedResponse {
|
|
21260
|
+
results: EvalRun[];
|
|
21261
|
+
metadata: PaginationMeta;
|
|
21262
|
+
}
|
|
21263
|
+
export interface GetEvalRunPaginatedDTO {
|
|
21264
|
+
id?: string;
|
|
21265
|
+
/**
|
|
21266
|
+
* This is the page number to return. Defaults to 1.
|
|
21267
|
+
* @min 1
|
|
21268
|
+
*/
|
|
21269
|
+
page?: number;
|
|
21270
|
+
/** This is the sort order for pagination. Defaults to 'DESC'. */
|
|
21271
|
+
sortOrder?: "ASC" | "DESC";
|
|
21272
|
+
/**
|
|
21273
|
+
* This is the maximum number of items to return. Defaults to 100.
|
|
21274
|
+
* @min 0
|
|
21275
|
+
* @max 1000
|
|
21276
|
+
*/
|
|
21277
|
+
limit?: number;
|
|
21278
|
+
/**
|
|
21279
|
+
* This will return items where the createdAt is greater than the specified value.
|
|
21280
|
+
* @format date-time
|
|
21281
|
+
*/
|
|
21282
|
+
createdAtGt?: string;
|
|
21283
|
+
/**
|
|
21284
|
+
* This will return items where the createdAt is less than the specified value.
|
|
21285
|
+
* @format date-time
|
|
21286
|
+
*/
|
|
21287
|
+
createdAtLt?: string;
|
|
21288
|
+
/**
|
|
21289
|
+
* This will return items where the createdAt is greater than or equal to the specified value.
|
|
21290
|
+
* @format date-time
|
|
21291
|
+
*/
|
|
21292
|
+
createdAtGe?: string;
|
|
21293
|
+
/**
|
|
21294
|
+
* This will return items where the createdAt is less than or equal to the specified value.
|
|
21295
|
+
* @format date-time
|
|
21296
|
+
*/
|
|
21297
|
+
createdAtLe?: string;
|
|
21298
|
+
/**
|
|
21299
|
+
* This will return items where the updatedAt is greater than the specified value.
|
|
21300
|
+
* @format date-time
|
|
21301
|
+
*/
|
|
21302
|
+
updatedAtGt?: string;
|
|
21303
|
+
/**
|
|
21304
|
+
* This will return items where the updatedAt is less than the specified value.
|
|
21305
|
+
* @format date-time
|
|
21306
|
+
*/
|
|
21307
|
+
updatedAtLt?: string;
|
|
21308
|
+
/**
|
|
21309
|
+
* This will return items where the updatedAt is greater than or equal to the specified value.
|
|
21310
|
+
* @format date-time
|
|
21311
|
+
*/
|
|
21312
|
+
updatedAtGe?: string;
|
|
21313
|
+
/**
|
|
21314
|
+
* This will return items where the updatedAt is less than or equal to the specified value.
|
|
21315
|
+
* @format date-time
|
|
21316
|
+
*/
|
|
21317
|
+
updatedAtLe?: string;
|
|
21318
|
+
}
|
|
21319
|
+
export interface EvalRunTargetAssistant {
|
|
21320
|
+
/** This is the transient assistant that will be run against the eval */
|
|
21321
|
+
assistant?: CreateAssistantDTO;
|
|
21322
|
+
/**
|
|
21323
|
+
* This is the overrides that will be applied to the assistant.
|
|
21324
|
+
* @example "{"
|
|
21325
|
+
*/
|
|
21326
|
+
assistantOverrides?: AssistantOverrides;
|
|
21327
|
+
/**
|
|
21328
|
+
* This is the type of the target.
|
|
21329
|
+
* Currently it is fixed to `assistant`.
|
|
21330
|
+
* @example "assistant"
|
|
21331
|
+
*/
|
|
21332
|
+
type: "assistant";
|
|
21333
|
+
/**
|
|
21334
|
+
* This is the id of the assistant that will be run against the eval
|
|
21335
|
+
* @example "123e4567-e89b-12d3-a456-426614174000"
|
|
21336
|
+
*/
|
|
21337
|
+
assistantId?: string;
|
|
21338
|
+
}
|
|
21339
|
+
export interface EvalRunTargetSquad {
|
|
21340
|
+
/** This is the transient squad that will be run against the eval */
|
|
21341
|
+
squad?: CreateSquadDTO;
|
|
21342
|
+
/**
|
|
21343
|
+
* This is the overrides that will be applied to the assistants.
|
|
21344
|
+
* @example "{"
|
|
21345
|
+
*/
|
|
21346
|
+
assistantOverrides?: AssistantOverrides;
|
|
21347
|
+
/**
|
|
21348
|
+
* This is the type of the target.
|
|
21349
|
+
* Currently it is fixed to `squad`.
|
|
21350
|
+
* @example "squad"
|
|
21351
|
+
*/
|
|
21352
|
+
type: "squad";
|
|
21353
|
+
/**
|
|
21354
|
+
* This is the id of the squad that will be run against the eval
|
|
21355
|
+
* @example "123e4567-e89b-12d3-a456-426614174000"
|
|
21356
|
+
*/
|
|
21357
|
+
squadId?: string;
|
|
21358
|
+
}
|
|
21359
|
+
export interface CreateOrgDTO {
|
|
21360
|
+
/**
|
|
21361
|
+
* When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
|
|
21362
|
+
* When HIPAA is enabled, only OpenAI/Custom LLM or Azure Providers will be available for LLM and Voice respectively.
|
|
21363
|
+
* This is due to the compliance requirements of HIPAA. Other providers may not meet these requirements.
|
|
21364
|
+
* @example false
|
|
21365
|
+
*/
|
|
21366
|
+
hipaaEnabled?: boolean;
|
|
21367
|
+
/** This is the ID of the subscription the org belongs to. */
|
|
20376
21368
|
subscriptionId?: string;
|
|
20377
21369
|
/**
|
|
20378
21370
|
* This is the name of the org. This is just for your own reference.
|
|
@@ -23404,6 +24396,13 @@ export interface CloneVoiceDTO {
|
|
|
23404
24396
|
/** These are the files you want to use to clone your voice. Only Audio files are supported. */
|
|
23405
24397
|
files: File[];
|
|
23406
24398
|
}
|
|
24399
|
+
export interface VariableValueGroupBy {
|
|
24400
|
+
/**
|
|
24401
|
+
* This is the key of the variable value to group by.
|
|
24402
|
+
* @maxLength 100
|
|
24403
|
+
*/
|
|
24404
|
+
key: string;
|
|
24405
|
+
}
|
|
23407
24406
|
export interface TimeRange {
|
|
23408
24407
|
/**
|
|
23409
24408
|
* This is the time step for aggregations.
|
|
@@ -23448,6 +24447,8 @@ export interface AnalyticsQuery {
|
|
|
23448
24447
|
table: "call" | "subscription";
|
|
23449
24448
|
/** This is the list of columns you want to group by. */
|
|
23450
24449
|
groupBy?: "type" | "assistantId" | "endedReason" | "analysis.successEvaluation" | "status";
|
|
24450
|
+
/** This is the list of variable value keys you want to group by. */
|
|
24451
|
+
groupByVariableValue?: VariableValueGroupBy[];
|
|
23451
24452
|
/**
|
|
23452
24453
|
* This is the name of the query. This will be used to identify the query in the response.
|
|
23453
24454
|
* @maxLength 40
|
|
@@ -23853,7 +24854,7 @@ export interface ServerMessageEndOfCallReport {
|
|
|
23853
24854
|
/** This is the type of the message. "end-of-call-report" is sent when the call ends and post-processing is complete. */
|
|
23854
24855
|
type: "end-of-call-report";
|
|
23855
24856
|
/** This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id. */
|
|
23856
|
-
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" | "scheduled-call-deleted" | "call.start.error-vapifault-get-org" | "call.start.error-vapifault-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" | "call.start.error-subscription-wallet-does-not-exist" | "call.start.error-subscription-frozen" | "call.start.error-subscription-insufficient-credits" | "call.start.error-subscription-upgrade-failed" | "call.start.error-subscription-concurrency-limit-reached" | "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-inworld-voice-failed" | "pipeline-error-minimax-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-inworld-voice-failed" | "call.in-progress.error-vapifault-minimax-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-providerfault-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" | "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-worker-died" | "call.in-progress.twilio-completed-call" | "call.in-progress.sip-completed-call" | "call.in-progress.error-providerfault-openai-llm-failed" | "call.in-progress.error-providerfault-azure-openai-llm-failed" | "call.in-progress.error-providerfault-groq-llm-failed" | "call.in-progress.error-providerfault-google-llm-failed" | "call.in-progress.error-providerfault-xai-llm-failed" | "call.in-progress.error-providerfault-mistral-llm-failed" | "call.in-progress.error-providerfault-inflection-ai-llm-failed" | "call.in-progress.error-providerfault-cerebras-llm-failed" | "call.in-progress.error-providerfault-deep-seek-llm-failed" | "call.in-progress.error-vapifault-chat-pipeline-failed-to-start" | "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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-502-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-vapi-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" | "pipeline-error-eleven-labs-503-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" | "call.in-progress.error-providerfault-eleven-labs-503-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" | "pipeline-error-deepgram-returning-econnreset" | "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" | "call.in-progress.error-warm-transfer-max-duration" | "call.in-progress.error-warm-transfer-assistant-cancelled" | "call.in-progress.error-warm-transfer-silence-timeout" | "call.in-progress.error-warm-transfer-microphone-timeout" | "call.in-progress.error-warm-transfer-hang-timeout" | "call.in-progress.error-warm-transfer-idle-timeout" | "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" | "call.in-progress.error-transfer-failed" | "customer-busy" | "customer-ended-call" | "customer-ended-call-after-warm-transfer-attempt" | "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-inbound-call-failed-to-connect" | "call.in-progress.error-providerfault-outbound-sip-403-forbidden" | "call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required" | "call.in-progress.error-providerfault-outbound-sip-503-service-unavailable" | "call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable" | "call.in-progress.error-sip-outbound-call-failed-to-connect" | "call.ringing.hook-executed-say" | "call.ringing.hook-executed-transfer" | "call.ending.hook-executed-say" | "call.ending.hook-executed-transfer" | "call.ringing.sip-inbound-caller-hungup-before-call-connect" | "call.ringing.error-sip-inbound-call-failed-to-connect" | "twilio-failed-to-connect-call" | "twilio-reported-customer-misdialed" | "vonage-rejected" | "voicemail";
|
|
24857
|
+
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" | "scheduled-call-deleted" | "call.start.error-vapifault-get-org" | "call.start.error-vapifault-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" | "call.start.error-subscription-wallet-does-not-exist" | "call.start.error-fraud-check-failed" | "call.start.error-subscription-frozen" | "call.start.error-subscription-insufficient-credits" | "call.start.error-subscription-upgrade-failed" | "call.start.error-subscription-concurrency-limit-reached" | "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-inworld-voice-failed" | "pipeline-error-minimax-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-inworld-voice-failed" | "call.in-progress.error-vapifault-minimax-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-providerfault-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" | "pipeline-error-deepgram-transcriber-api-key-missing" | "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" | "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-worker-died" | "call.in-progress.twilio-completed-call" | "call.in-progress.sip-completed-call" | "call.in-progress.error-providerfault-openai-llm-failed" | "call.in-progress.error-providerfault-azure-openai-llm-failed" | "call.in-progress.error-providerfault-groq-llm-failed" | "call.in-progress.error-providerfault-google-llm-failed" | "call.in-progress.error-providerfault-xai-llm-failed" | "call.in-progress.error-providerfault-mistral-llm-failed" | "call.in-progress.error-providerfault-inflection-ai-llm-failed" | "call.in-progress.error-providerfault-cerebras-llm-failed" | "call.in-progress.error-providerfault-deep-seek-llm-failed" | "call.in-progress.error-vapifault-chat-pipeline-failed-to-start" | "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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-502-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-vapi-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" | "pipeline-error-eleven-labs-503-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" | "call.in-progress.error-providerfault-eleven-labs-503-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" | "pipeline-error-deepgram-returning-econnreset" | "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" | "call.in-progress.error-warm-transfer-max-duration" | "call.in-progress.error-warm-transfer-assistant-cancelled" | "call.in-progress.error-warm-transfer-silence-timeout" | "call.in-progress.error-warm-transfer-microphone-timeout" | "call.in-progress.error-warm-transfer-hang-timeout" | "call.in-progress.error-warm-transfer-idle-timeout" | "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" | "call.in-progress.error-transfer-failed" | "customer-busy" | "customer-ended-call" | "customer-ended-call-after-warm-transfer-attempt" | "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-inbound-call-failed-to-connect" | "call.in-progress.error-providerfault-outbound-sip-403-forbidden" | "call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required" | "call.in-progress.error-providerfault-outbound-sip-503-service-unavailable" | "call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable" | "call.in-progress.error-sip-outbound-call-failed-to-connect" | "call.ringing.hook-executed-say" | "call.ringing.hook-executed-transfer" | "call.ending.hook-executed-say" | "call.ending.hook-executed-transfer" | "call.ringing.sip-inbound-caller-hungup-before-call-connect" | "call.ringing.error-sip-inbound-call-failed-to-connect" | "twilio-failed-to-connect-call" | "twilio-reported-customer-misdialed" | "vonage-rejected" | "voicemail";
|
|
23857
24858
|
/** This is the cost of the call in USD. This can also be found at `call.cost` on GET /call/:id. */
|
|
23858
24859
|
cost?: number;
|
|
23859
24860
|
/** These are the costs of individual components of the call in USD. This can also be found at `call.costs` on GET /call/:id. */
|
|
@@ -23882,6 +24883,32 @@ export interface ServerMessageEndOfCallReport {
|
|
|
23882
24883
|
* @format date-time
|
|
23883
24884
|
*/
|
|
23884
24885
|
endedAt?: string;
|
|
24886
|
+
/** This is the compliance result of the call. This can also be found at `call.compliance` on GET /call/:id. */
|
|
24887
|
+
compliance?: Compliance;
|
|
24888
|
+
}
|
|
24889
|
+
export interface ServerMessageHandoffDestinationRequest {
|
|
24890
|
+
/** This is the phone number that the message is associated with. */
|
|
24891
|
+
phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO | CreateTelnyxPhoneNumberDTO;
|
|
24892
|
+
/** This is the type of the message. "handoff-destination-request" is sent when the model is requesting handoff but destination is unknown. */
|
|
24893
|
+
type: "handoff-destination-request";
|
|
24894
|
+
/** This is the timestamp of the message. */
|
|
24895
|
+
timestamp?: number;
|
|
24896
|
+
/**
|
|
24897
|
+
* This is a live version of the `call.artifact`.
|
|
24898
|
+
*
|
|
24899
|
+
* This matches what is stored on `call.artifact` after the call.
|
|
24900
|
+
*/
|
|
24901
|
+
artifact?: Artifact;
|
|
24902
|
+
/** This is the assistant that the message is associated with. */
|
|
24903
|
+
assistant?: CreateAssistantDTO;
|
|
24904
|
+
/** This is the customer that the message is associated with. */
|
|
24905
|
+
customer?: CreateCustomerDTO;
|
|
24906
|
+
/** This is the call that the message is associated with. */
|
|
24907
|
+
call?: Call;
|
|
24908
|
+
/** This is the chat object. */
|
|
24909
|
+
chat?: Chat;
|
|
24910
|
+
/** This is the parameters of the handoff destination request. */
|
|
24911
|
+
parameters: object;
|
|
23885
24912
|
}
|
|
23886
24913
|
export interface ServerMessageHang {
|
|
23887
24914
|
/** This is the phone number that the message is associated with. */
|
|
@@ -24027,7 +25054,7 @@ export interface ServerMessageStatusUpdate {
|
|
|
24027
25054
|
/** This is the status of the call. */
|
|
24028
25055
|
status: "scheduled" | "queued" | "ringing" | "in-progress" | "forwarding" | "ended";
|
|
24029
25056
|
/** This is the reason the call ended. This is only sent if the status is "ended". */
|
|
24030
|
-
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" | "scheduled-call-deleted" | "call.start.error-vapifault-get-org" | "call.start.error-vapifault-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" | "call.start.error-subscription-wallet-does-not-exist" | "call.start.error-subscription-frozen" | "call.start.error-subscription-insufficient-credits" | "call.start.error-subscription-upgrade-failed" | "call.start.error-subscription-concurrency-limit-reached" | "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-inworld-voice-failed" | "pipeline-error-minimax-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-inworld-voice-failed" | "call.in-progress.error-vapifault-minimax-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-providerfault-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" | "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-worker-died" | "call.in-progress.twilio-completed-call" | "call.in-progress.sip-completed-call" | "call.in-progress.error-providerfault-openai-llm-failed" | "call.in-progress.error-providerfault-azure-openai-llm-failed" | "call.in-progress.error-providerfault-groq-llm-failed" | "call.in-progress.error-providerfault-google-llm-failed" | "call.in-progress.error-providerfault-xai-llm-failed" | "call.in-progress.error-providerfault-mistral-llm-failed" | "call.in-progress.error-providerfault-inflection-ai-llm-failed" | "call.in-progress.error-providerfault-cerebras-llm-failed" | "call.in-progress.error-providerfault-deep-seek-llm-failed" | "call.in-progress.error-vapifault-chat-pipeline-failed-to-start" | "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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-502-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-vapi-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" | "pipeline-error-eleven-labs-503-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" | "call.in-progress.error-providerfault-eleven-labs-503-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" | "pipeline-error-deepgram-returning-econnreset" | "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" | "call.in-progress.error-warm-transfer-max-duration" | "call.in-progress.error-warm-transfer-assistant-cancelled" | "call.in-progress.error-warm-transfer-silence-timeout" | "call.in-progress.error-warm-transfer-microphone-timeout" | "call.in-progress.error-warm-transfer-hang-timeout" | "call.in-progress.error-warm-transfer-idle-timeout" | "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" | "call.in-progress.error-transfer-failed" | "customer-busy" | "customer-ended-call" | "customer-ended-call-after-warm-transfer-attempt" | "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-inbound-call-failed-to-connect" | "call.in-progress.error-providerfault-outbound-sip-403-forbidden" | "call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required" | "call.in-progress.error-providerfault-outbound-sip-503-service-unavailable" | "call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable" | "call.in-progress.error-sip-outbound-call-failed-to-connect" | "call.ringing.hook-executed-say" | "call.ringing.hook-executed-transfer" | "call.ending.hook-executed-say" | "call.ending.hook-executed-transfer" | "call.ringing.sip-inbound-caller-hungup-before-call-connect" | "call.ringing.error-sip-inbound-call-failed-to-connect" | "twilio-failed-to-connect-call" | "twilio-reported-customer-misdialed" | "vonage-rejected" | "voicemail";
|
|
25057
|
+
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" | "scheduled-call-deleted" | "call.start.error-vapifault-get-org" | "call.start.error-vapifault-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" | "call.start.error-subscription-wallet-does-not-exist" | "call.start.error-fraud-check-failed" | "call.start.error-subscription-frozen" | "call.start.error-subscription-insufficient-credits" | "call.start.error-subscription-upgrade-failed" | "call.start.error-subscription-concurrency-limit-reached" | "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-inworld-voice-failed" | "pipeline-error-minimax-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-inworld-voice-failed" | "call.in-progress.error-vapifault-minimax-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-providerfault-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" | "pipeline-error-deepgram-transcriber-api-key-missing" | "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" | "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-worker-died" | "call.in-progress.twilio-completed-call" | "call.in-progress.sip-completed-call" | "call.in-progress.error-providerfault-openai-llm-failed" | "call.in-progress.error-providerfault-azure-openai-llm-failed" | "call.in-progress.error-providerfault-groq-llm-failed" | "call.in-progress.error-providerfault-google-llm-failed" | "call.in-progress.error-providerfault-xai-llm-failed" | "call.in-progress.error-providerfault-mistral-llm-failed" | "call.in-progress.error-providerfault-inflection-ai-llm-failed" | "call.in-progress.error-providerfault-cerebras-llm-failed" | "call.in-progress.error-providerfault-deep-seek-llm-failed" | "call.in-progress.error-vapifault-chat-pipeline-failed-to-start" | "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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-providerfault-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-502-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-vapi-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" | "pipeline-error-eleven-labs-503-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" | "call.in-progress.error-providerfault-eleven-labs-503-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" | "pipeline-error-deepgram-returning-econnreset" | "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" | "call.in-progress.error-warm-transfer-max-duration" | "call.in-progress.error-warm-transfer-assistant-cancelled" | "call.in-progress.error-warm-transfer-silence-timeout" | "call.in-progress.error-warm-transfer-microphone-timeout" | "call.in-progress.error-warm-transfer-hang-timeout" | "call.in-progress.error-warm-transfer-idle-timeout" | "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" | "call.in-progress.error-transfer-failed" | "customer-busy" | "customer-ended-call" | "customer-ended-call-after-warm-transfer-attempt" | "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-inbound-call-failed-to-connect" | "call.in-progress.error-providerfault-outbound-sip-403-forbidden" | "call.in-progress.error-providerfault-outbound-sip-407-proxy-authentication-required" | "call.in-progress.error-providerfault-outbound-sip-503-service-unavailable" | "call.in-progress.error-providerfault-outbound-sip-480-temporarily-unavailable" | "call.in-progress.error-sip-outbound-call-failed-to-connect" | "call.ringing.hook-executed-say" | "call.ringing.hook-executed-transfer" | "call.ending.hook-executed-say" | "call.ending.hook-executed-transfer" | "call.ringing.sip-inbound-caller-hungup-before-call-connect" | "call.ringing.error-sip-inbound-call-failed-to-connect" | "twilio-failed-to-connect-call" | "twilio-reported-customer-misdialed" | "vonage-rejected" | "voicemail";
|
|
24031
25058
|
/** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
|
|
24032
25059
|
messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
|
|
24033
25060
|
/** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
|
|
@@ -24474,7 +25501,7 @@ export interface ServerMessage {
|
|
|
24474
25501
|
* 3. `phoneNumber.serverUrl` (if configured)
|
|
24475
25502
|
* 4. `org.serverUrl` (if configured)
|
|
24476
25503
|
*/
|
|
24477
|
-
message: ServerMessageAssistantRequest | ServerMessageConversationUpdate | ServerMessageEndOfCallReport | ServerMessageHang | ServerMessageKnowledgeBaseRequest | ServerMessageModelOutput | ServerMessagePhoneCallControl | ServerMessageSpeechUpdate | ServerMessageStatusUpdate | ServerMessageToolCalls | ServerMessageTransferDestinationRequest | ServerMessageTransferUpdate | ServerMessageTranscript | ServerMessageUserInterrupted | ServerMessageLanguageChangeDetected | ServerMessageVoiceInput | ServerMessageVoiceRequest | ServerMessageCallEndpointingRequest | ServerMessageChatCreated | ServerMessageChatDeleted | ServerMessageSessionCreated | ServerMessageSessionUpdated | ServerMessageSessionDeleted;
|
|
25504
|
+
message: ServerMessageAssistantRequest | ServerMessageConversationUpdate | ServerMessageEndOfCallReport | ServerMessageHandoffDestinationRequest | ServerMessageHang | ServerMessageKnowledgeBaseRequest | ServerMessageModelOutput | ServerMessagePhoneCallControl | ServerMessageSpeechUpdate | ServerMessageStatusUpdate | ServerMessageToolCalls | ServerMessageTransferDestinationRequest | ServerMessageTransferUpdate | ServerMessageTranscript | ServerMessageUserInterrupted | ServerMessageLanguageChangeDetected | ServerMessageVoiceInput | ServerMessageVoiceRequest | ServerMessageCallEndpointingRequest | ServerMessageChatCreated | ServerMessageChatDeleted | ServerMessageSessionCreated | ServerMessageSessionUpdated | ServerMessageSessionDeleted;
|
|
24478
25505
|
}
|
|
24479
25506
|
export interface ServerMessageResponseAssistantRequest {
|
|
24480
25507
|
/**
|
|
@@ -24551,6 +25578,8 @@ export interface ServerMessageResponseAssistantRequest {
|
|
|
24551
25578
|
export interface ServerMessageResponseHandoffDestinationRequest {
|
|
24552
25579
|
/** This is the destination you'd like the call to be transferred to. */
|
|
24553
25580
|
destination: HandoffDestinationAssistant;
|
|
25581
|
+
/** This is the error message if the handoff should not be made. */
|
|
25582
|
+
error?: string;
|
|
24554
25583
|
}
|
|
24555
25584
|
export interface KnowledgeBaseResponseDocument {
|
|
24556
25585
|
/** This is the content of the document. */
|
|
@@ -24679,11 +25708,13 @@ export interface ClientInboundMessageControl {
|
|
|
24679
25708
|
* This is the type of the message. Send "control" message to control the assistant. `control` options are:
|
|
24680
25709
|
* - "mute-assistant" - mute the assistant
|
|
24681
25710
|
* - "unmute-assistant" - unmute the assistant
|
|
25711
|
+
* - "mute-customer" - mute the user
|
|
25712
|
+
* - "unmute-customer" - unmute the user
|
|
24682
25713
|
* - "say-first-message" - say the first message (this is used when video recording is enabled and the conversation is only started once the client side kicks off the recording)
|
|
24683
25714
|
*/
|
|
24684
25715
|
type: "control";
|
|
24685
25716
|
/** This is the control action */
|
|
24686
|
-
control: "mute-assistant" | "unmute-assistant" | "say-first-message";
|
|
25717
|
+
control: "mute-assistant" | "unmute-assistant" | "mute-customer" | "unmute-customer" | "say-first-message";
|
|
24687
25718
|
}
|
|
24688
25719
|
export interface ClientInboundMessageSay {
|
|
24689
25720
|
/** This is the type of the message. Send "say" message to make the assistant say something. */
|
|
@@ -24765,7 +25796,7 @@ export interface ToolCallResultMessage {
|
|
|
24765
25796
|
export interface TransportCost {
|
|
24766
25797
|
/** This is the type of cost, always 'transport' for this class. */
|
|
24767
25798
|
type: "transport";
|
|
24768
|
-
provider?: "twilio" | "vonage" | "vapi";
|
|
25799
|
+
provider?: "daily" | "vapi.websocket" | "twilio" | "vonage" | "telnyx" | "vapi.sip";
|
|
24769
25800
|
/** This is the minutes of `transport` usage. This should match `call.endedAt` - `call.startedAt`. */
|
|
24770
25801
|
minutes: number;
|
|
24771
25802
|
/** This is the cost of the component in USD. */
|
|
@@ -26448,6 +27479,28 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
26448
27479
|
* @maxLength 40
|
|
26449
27480
|
*/
|
|
26450
27481
|
externalId?: string;
|
|
27482
|
+
/**
|
|
27483
|
+
* Filter calls by structured output values. Use structured output ID as key and filter operators as values.
|
|
27484
|
+
* @example {"c9dddda4-d70a-4dad-aa5c-aaf117f85cea":{"eq":"2","gt":"1"}}
|
|
27485
|
+
*/
|
|
27486
|
+
structuredOutputs?: Record<string, {
|
|
27487
|
+
/** Equal to */
|
|
27488
|
+
eq?: string;
|
|
27489
|
+
/** Not equal to */
|
|
27490
|
+
neq?: string;
|
|
27491
|
+
/** Greater than */
|
|
27492
|
+
gt?: string;
|
|
27493
|
+
/** Greater than or equal to */
|
|
27494
|
+
gte?: string;
|
|
27495
|
+
/** Less than */
|
|
27496
|
+
lt?: string;
|
|
27497
|
+
/** Less than or equal to */
|
|
27498
|
+
lte?: string;
|
|
27499
|
+
/** Contains */
|
|
27500
|
+
contains?: string;
|
|
27501
|
+
/** Not contains */
|
|
27502
|
+
notContains?: string;
|
|
27503
|
+
}>;
|
|
26451
27504
|
/**
|
|
26452
27505
|
* This is the page number to return. Defaults to 1.
|
|
26453
27506
|
* @min 1
|
|
@@ -26590,6 +27643,28 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
26590
27643
|
* @maxLength 40
|
|
26591
27644
|
*/
|
|
26592
27645
|
externalId?: string;
|
|
27646
|
+
/**
|
|
27647
|
+
* Filter calls by structured output values. Use structured output ID as key and filter operators as values.
|
|
27648
|
+
* @example {"c9dddda4-d70a-4dad-aa5c-aaf117f85cea":{"eq":"2","gt":"1"}}
|
|
27649
|
+
*/
|
|
27650
|
+
structuredOutputs?: Record<string, {
|
|
27651
|
+
/** Equal to */
|
|
27652
|
+
eq?: string;
|
|
27653
|
+
/** Not equal to */
|
|
27654
|
+
neq?: string;
|
|
27655
|
+
/** Greater than */
|
|
27656
|
+
gt?: string;
|
|
27657
|
+
/** Greater than or equal to */
|
|
27658
|
+
gte?: string;
|
|
27659
|
+
/** Less than */
|
|
27660
|
+
lt?: string;
|
|
27661
|
+
/** Less than or equal to */
|
|
27662
|
+
lte?: string;
|
|
27663
|
+
/** Contains */
|
|
27664
|
+
contains?: string;
|
|
27665
|
+
/** Not contains */
|
|
27666
|
+
notContains?: string;
|
|
27667
|
+
}>;
|
|
26593
27668
|
/**
|
|
26594
27669
|
* This is the page number to return. Defaults to 1.
|
|
26595
27670
|
* @min 1
|
|
@@ -26732,6 +27807,28 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
26732
27807
|
* @maxLength 40
|
|
26733
27808
|
*/
|
|
26734
27809
|
externalId?: string;
|
|
27810
|
+
/**
|
|
27811
|
+
* Filter calls by structured output values. Use structured output ID as key and filter operators as values.
|
|
27812
|
+
* @example {"c9dddda4-d70a-4dad-aa5c-aaf117f85cea":{"eq":"2","gt":"1"}}
|
|
27813
|
+
*/
|
|
27814
|
+
structuredOutputs?: Record<string, {
|
|
27815
|
+
/** Equal to */
|
|
27816
|
+
eq?: string;
|
|
27817
|
+
/** Not equal to */
|
|
27818
|
+
neq?: string;
|
|
27819
|
+
/** Greater than */
|
|
27820
|
+
gt?: string;
|
|
27821
|
+
/** Greater than or equal to */
|
|
27822
|
+
gte?: string;
|
|
27823
|
+
/** Less than */
|
|
27824
|
+
lt?: string;
|
|
27825
|
+
/** Less than or equal to */
|
|
27826
|
+
lte?: string;
|
|
27827
|
+
/** Contains */
|
|
27828
|
+
contains?: string;
|
|
27829
|
+
/** Not contains */
|
|
27830
|
+
notContains?: string;
|
|
27831
|
+
}>;
|
|
26735
27832
|
/**
|
|
26736
27833
|
* This is the page number to return. Defaults to 1.
|
|
26737
27834
|
* @min 1
|
|
@@ -27150,6 +28247,8 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
27150
28247
|
chatControllerListChats: (query?: {
|
|
27151
28248
|
/** This is the unique identifier for the assistant that will be used for the chat. */
|
|
27152
28249
|
assistantId?: string;
|
|
28250
|
+
/** This is the unique identifier for the squad that will be used for the chat. */
|
|
28251
|
+
squadId?: string;
|
|
27153
28252
|
/** This is the unique identifier for the workflow that will be used for the chat. */
|
|
27154
28253
|
workflowId?: string;
|
|
27155
28254
|
/** This is the unique identifier for the session that will be used for the chat. */
|
|
@@ -27209,7 +28308,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
27209
28308
|
updatedAtLe?: string;
|
|
27210
28309
|
}, params?: RequestParams) => Promise<HttpResponse<ChatPaginatedResponse, any>>;
|
|
27211
28310
|
/**
|
|
27212
|
-
* @description Creates a new chat. Requires at least one of: assistantId/assistant, sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive.
|
|
28311
|
+
* @description Creates a new chat with optional SMS delivery via transport field. Requires at least one of: assistantId/assistant, sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive. Transport field enables SMS delivery with two modes: (1) New conversation - provide transport.phoneNumberId and transport.customer to create a new session, (2) Existing conversation - provide sessionId to use existing session data. Cannot specify both sessionId and transport fields together. The transport.useLLMGeneratedMessageForOutbound flag controls whether input is processed by LLM (true, default) or forwarded directly as SMS (false).
|
|
27213
28312
|
*
|
|
27214
28313
|
* @tags Chats
|
|
27215
28314
|
* @name ChatControllerCreateChat
|
|
@@ -27402,6 +28501,8 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
27402
28501
|
name?: string;
|
|
27403
28502
|
/** This is the ID of the assistant to filter sessions by. */
|
|
27404
28503
|
assistantId?: string;
|
|
28504
|
+
/** This is the ID of the squad to filter sessions by. */
|
|
28505
|
+
squadId?: string;
|
|
27405
28506
|
/** This is the ID of the workflow to filter sessions by. */
|
|
27406
28507
|
workflowId?: string;
|
|
27407
28508
|
/**
|
|
@@ -28719,6 +29820,208 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
|
|
|
28719
29820
|
*/
|
|
28720
29821
|
testSuiteRunControllerRemove: (testSuiteId: string, id: string, params?: RequestParams) => Promise<HttpResponse<TestSuiteRun, any>>;
|
|
28721
29822
|
};
|
|
29823
|
+
eval: {
|
|
29824
|
+
/**
|
|
29825
|
+
* No description
|
|
29826
|
+
*
|
|
29827
|
+
* @tags Eval
|
|
29828
|
+
* @name EvalControllerCreate
|
|
29829
|
+
* @summary Create Eval
|
|
29830
|
+
* @request POST:/eval
|
|
29831
|
+
* @secure
|
|
29832
|
+
*/
|
|
29833
|
+
evalControllerCreate: (data: CreateEvalDTO, params?: RequestParams) => Promise<HttpResponse<Eval, any>>;
|
|
29834
|
+
/**
|
|
29835
|
+
* No description
|
|
29836
|
+
*
|
|
29837
|
+
* @tags Eval
|
|
29838
|
+
* @name EvalControllerGetPaginated
|
|
29839
|
+
* @summary List Evals
|
|
29840
|
+
* @request GET:/eval
|
|
29841
|
+
* @secure
|
|
29842
|
+
*/
|
|
29843
|
+
evalControllerGetPaginated: (query?: {
|
|
29844
|
+
id?: string;
|
|
29845
|
+
/**
|
|
29846
|
+
* This is the page number to return. Defaults to 1.
|
|
29847
|
+
* @min 1
|
|
29848
|
+
*/
|
|
29849
|
+
page?: number;
|
|
29850
|
+
/** This is the sort order for pagination. Defaults to 'DESC'. */
|
|
29851
|
+
sortOrder?: "ASC" | "DESC";
|
|
29852
|
+
/**
|
|
29853
|
+
* This is the maximum number of items to return. Defaults to 100.
|
|
29854
|
+
* @min 0
|
|
29855
|
+
* @max 1000
|
|
29856
|
+
*/
|
|
29857
|
+
limit?: number;
|
|
29858
|
+
/**
|
|
29859
|
+
* This will return items where the createdAt is greater than the specified value.
|
|
29860
|
+
* @format date-time
|
|
29861
|
+
*/
|
|
29862
|
+
createdAtGt?: string;
|
|
29863
|
+
/**
|
|
29864
|
+
* This will return items where the createdAt is less than the specified value.
|
|
29865
|
+
* @format date-time
|
|
29866
|
+
*/
|
|
29867
|
+
createdAtLt?: string;
|
|
29868
|
+
/**
|
|
29869
|
+
* This will return items where the createdAt is greater than or equal to the specified value.
|
|
29870
|
+
* @format date-time
|
|
29871
|
+
*/
|
|
29872
|
+
createdAtGe?: string;
|
|
29873
|
+
/**
|
|
29874
|
+
* This will return items where the createdAt is less than or equal to the specified value.
|
|
29875
|
+
* @format date-time
|
|
29876
|
+
*/
|
|
29877
|
+
createdAtLe?: string;
|
|
29878
|
+
/**
|
|
29879
|
+
* This will return items where the updatedAt is greater than the specified value.
|
|
29880
|
+
* @format date-time
|
|
29881
|
+
*/
|
|
29882
|
+
updatedAtGt?: string;
|
|
29883
|
+
/**
|
|
29884
|
+
* This will return items where the updatedAt is less than the specified value.
|
|
29885
|
+
* @format date-time
|
|
29886
|
+
*/
|
|
29887
|
+
updatedAtLt?: string;
|
|
29888
|
+
/**
|
|
29889
|
+
* This will return items where the updatedAt is greater than or equal to the specified value.
|
|
29890
|
+
* @format date-time
|
|
29891
|
+
*/
|
|
29892
|
+
updatedAtGe?: string;
|
|
29893
|
+
/**
|
|
29894
|
+
* This will return items where the updatedAt is less than or equal to the specified value.
|
|
29895
|
+
* @format date-time
|
|
29896
|
+
*/
|
|
29897
|
+
updatedAtLe?: string;
|
|
29898
|
+
}, params?: RequestParams) => Promise<HttpResponse<EvalPaginatedResponse, any>>;
|
|
29899
|
+
/**
|
|
29900
|
+
* No description
|
|
29901
|
+
*
|
|
29902
|
+
* @tags Eval
|
|
29903
|
+
* @name EvalControllerUpdate
|
|
29904
|
+
* @summary Update Eval
|
|
29905
|
+
* @request PATCH:/eval/{id}
|
|
29906
|
+
* @secure
|
|
29907
|
+
*/
|
|
29908
|
+
evalControllerUpdate: (id: string, data: UpdateEvalDTO, params?: RequestParams) => Promise<HttpResponse<Eval, any>>;
|
|
29909
|
+
/**
|
|
29910
|
+
* No description
|
|
29911
|
+
*
|
|
29912
|
+
* @tags Eval
|
|
29913
|
+
* @name EvalControllerRemove
|
|
29914
|
+
* @summary Delete Eval
|
|
29915
|
+
* @request DELETE:/eval/{id}
|
|
29916
|
+
* @secure
|
|
29917
|
+
*/
|
|
29918
|
+
evalControllerRemove: (id: string, params?: RequestParams) => Promise<HttpResponse<Eval, any>>;
|
|
29919
|
+
/**
|
|
29920
|
+
* No description
|
|
29921
|
+
*
|
|
29922
|
+
* @tags Eval
|
|
29923
|
+
* @name EvalControllerGet
|
|
29924
|
+
* @summary Get Eval
|
|
29925
|
+
* @request GET:/eval/{id}
|
|
29926
|
+
* @secure
|
|
29927
|
+
*/
|
|
29928
|
+
evalControllerGet: (id: string, params?: RequestParams) => Promise<HttpResponse<Eval, any>>;
|
|
29929
|
+
/**
|
|
29930
|
+
* No description
|
|
29931
|
+
*
|
|
29932
|
+
* @tags Eval
|
|
29933
|
+
* @name EvalControllerRemoveRun
|
|
29934
|
+
* @summary Delete Eval Run
|
|
29935
|
+
* @request DELETE:/eval/run/{id}
|
|
29936
|
+
* @secure
|
|
29937
|
+
*/
|
|
29938
|
+
evalControllerRemoveRun: (id: string, params?: RequestParams) => Promise<HttpResponse<EvalRun, any>>;
|
|
29939
|
+
/**
|
|
29940
|
+
* No description
|
|
29941
|
+
*
|
|
29942
|
+
* @tags Eval
|
|
29943
|
+
* @name EvalControllerGetRun
|
|
29944
|
+
* @summary Get Eval Run
|
|
29945
|
+
* @request GET:/eval/run/{id}
|
|
29946
|
+
* @secure
|
|
29947
|
+
*/
|
|
29948
|
+
evalControllerGetRun: (id: string, params?: RequestParams) => Promise<HttpResponse<EvalRun, any>>;
|
|
29949
|
+
/**
|
|
29950
|
+
* No description
|
|
29951
|
+
*
|
|
29952
|
+
* @tags Eval
|
|
29953
|
+
* @name EvalControllerRun
|
|
29954
|
+
* @summary Create Eval Run
|
|
29955
|
+
* @request POST:/eval/run
|
|
29956
|
+
* @secure
|
|
29957
|
+
*/
|
|
29958
|
+
evalControllerRun: (data: CreateEvalRunDTO, params?: RequestParams) => Promise<HttpResponse<void, any>>;
|
|
29959
|
+
/**
|
|
29960
|
+
* No description
|
|
29961
|
+
*
|
|
29962
|
+
* @tags Eval
|
|
29963
|
+
* @name EvalControllerGetRunsPaginated
|
|
29964
|
+
* @summary List Eval Runs
|
|
29965
|
+
* @request GET:/eval/run
|
|
29966
|
+
* @secure
|
|
29967
|
+
*/
|
|
29968
|
+
evalControllerGetRunsPaginated: (query?: {
|
|
29969
|
+
id?: string;
|
|
29970
|
+
/**
|
|
29971
|
+
* This is the page number to return. Defaults to 1.
|
|
29972
|
+
* @min 1
|
|
29973
|
+
*/
|
|
29974
|
+
page?: number;
|
|
29975
|
+
/** This is the sort order for pagination. Defaults to 'DESC'. */
|
|
29976
|
+
sortOrder?: "ASC" | "DESC";
|
|
29977
|
+
/**
|
|
29978
|
+
* This is the maximum number of items to return. Defaults to 100.
|
|
29979
|
+
* @min 0
|
|
29980
|
+
* @max 1000
|
|
29981
|
+
*/
|
|
29982
|
+
limit?: number;
|
|
29983
|
+
/**
|
|
29984
|
+
* This will return items where the createdAt is greater than the specified value.
|
|
29985
|
+
* @format date-time
|
|
29986
|
+
*/
|
|
29987
|
+
createdAtGt?: string;
|
|
29988
|
+
/**
|
|
29989
|
+
* This will return items where the createdAt is less than the specified value.
|
|
29990
|
+
* @format date-time
|
|
29991
|
+
*/
|
|
29992
|
+
createdAtLt?: string;
|
|
29993
|
+
/**
|
|
29994
|
+
* This will return items where the createdAt is greater than or equal to the specified value.
|
|
29995
|
+
* @format date-time
|
|
29996
|
+
*/
|
|
29997
|
+
createdAtGe?: string;
|
|
29998
|
+
/**
|
|
29999
|
+
* This will return items where the createdAt is less than or equal to the specified value.
|
|
30000
|
+
* @format date-time
|
|
30001
|
+
*/
|
|
30002
|
+
createdAtLe?: string;
|
|
30003
|
+
/**
|
|
30004
|
+
* This will return items where the updatedAt is greater than the specified value.
|
|
30005
|
+
* @format date-time
|
|
30006
|
+
*/
|
|
30007
|
+
updatedAtGt?: string;
|
|
30008
|
+
/**
|
|
30009
|
+
* This will return items where the updatedAt is less than the specified value.
|
|
30010
|
+
* @format date-time
|
|
30011
|
+
*/
|
|
30012
|
+
updatedAtLt?: string;
|
|
30013
|
+
/**
|
|
30014
|
+
* This will return items where the updatedAt is greater than or equal to the specified value.
|
|
30015
|
+
* @format date-time
|
|
30016
|
+
*/
|
|
30017
|
+
updatedAtGe?: string;
|
|
30018
|
+
/**
|
|
30019
|
+
* This will return items where the updatedAt is less than or equal to the specified value.
|
|
30020
|
+
* @format date-time
|
|
30021
|
+
*/
|
|
30022
|
+
updatedAtLe?: string;
|
|
30023
|
+
}, params?: RequestParams) => Promise<HttpResponse<EvalRunPaginatedResponse, any>>;
|
|
30024
|
+
};
|
|
28722
30025
|
org: {
|
|
28723
30026
|
/**
|
|
28724
30027
|
* No description
|