@vapi-ai/web 2.2.5 → 2.2.7

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/dist/api.d.ts CHANGED
@@ -1,3 +1,189 @@
1
+ export interface AnalysisCostBreakdown {
2
+ /** This is the cost to summarize the call. */
3
+ summary?: number;
4
+ /** This is the number of prompt tokens used to summarize the call. */
5
+ summaryPromptTokens?: number;
6
+ /** This is the number of completion tokens used to summarize the call. */
7
+ summaryCompletionTokens?: number;
8
+ /** This is the cost to extract structured data from the call. */
9
+ structuredData?: number;
10
+ /** This is the number of prompt tokens used to extract structured data from the call. */
11
+ structuredDataPromptTokens?: number;
12
+ /** This is the number of completion tokens used to extract structured data from the call. */
13
+ structuredDataCompletionTokens?: number;
14
+ /** This is the cost to evaluate if the call was successful. */
15
+ successEvaluation?: number;
16
+ /** This is the number of prompt tokens used to evaluate if the call was successful. */
17
+ successEvaluationPromptTokens?: number;
18
+ /** This is the number of completion tokens used to evaluate if the call was successful. */
19
+ successEvaluationCompletionTokens?: number;
20
+ }
21
+ export interface CostBreakdown {
22
+ /** This is the cost of the transport provider, like Twilio or Vonage. */
23
+ transport?: number;
24
+ /** This is the cost of the speech-to-text service. */
25
+ stt?: number;
26
+ /** This is the cost of the language model. */
27
+ llm?: number;
28
+ /** This is the cost of the text-to-speech service. */
29
+ tts?: number;
30
+ /** This is the cost of Vapi. */
31
+ vapi?: number;
32
+ /** This is the total cost of the call. */
33
+ total?: number;
34
+ /** This is the LLM prompt tokens used for the call. */
35
+ llmPromptTokens?: number;
36
+ /** This is the LLM completion tokens used for the call. */
37
+ llmCompletionTokens?: number;
38
+ /** This is the TTS characters used for the call. */
39
+ ttsCharacters?: number;
40
+ /** This is the cost of the analysis. */
41
+ analysisCostBreakdown?: AnalysisCostBreakdown;
42
+ }
43
+ export interface TranscriptPlan {
44
+ /**
45
+ * This determines whether the transcript is stored in `call.artifact.transcript`. Defaults to true.
46
+ *
47
+ * @default true
48
+ * @example true
49
+ */
50
+ enabled?: boolean;
51
+ /**
52
+ * This is the name of the assistant in the transcript. Defaults to 'AI'.
53
+ *
54
+ * Usage:
55
+ * - If you want to change the name of the assistant in the transcript, set this. Example, here is what the transcript would look like with `assistantName` set to 'Buyer':
56
+ * ```
57
+ * User: Hello, how are you?
58
+ * Buyer: I'm fine.
59
+ * User: Do you want to buy a car?
60
+ * Buyer: No.
61
+ * ```
62
+ *
63
+ * @default 'AI'
64
+ */
65
+ assistantName?: string;
66
+ /**
67
+ * This is the name of the user in the transcript. Defaults to 'User'.
68
+ *
69
+ * Usage:
70
+ * - If you want to change the name of the user in the transcript, set this. Example, here is what the transcript would look like with `userName` set to 'Seller':
71
+ * ```
72
+ * Seller: Hello, how are you?
73
+ * AI: I'm fine.
74
+ * Seller: Do you want to buy a car?
75
+ * AI: No.
76
+ * ```
77
+ *
78
+ * @default 'User'
79
+ */
80
+ userName?: string;
81
+ }
82
+ export interface ArtifactPlan {
83
+ /**
84
+ * This determines whether assistant's calls are recorded. Defaults to true.
85
+ *
86
+ * Usage:
87
+ * - If you don't want to record the calls, set this to false.
88
+ * - If you want to record the calls when `assistant.hipaaEnabled` (deprecated) or `assistant.compliancePlan.hipaaEnabled` explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.
89
+ *
90
+ * You can find the recording at `call.artifact.recordingUrl` and `call.artifact.stereoRecordingUrl` after the call is ended.
91
+ *
92
+ * @default true
93
+ * @example true
94
+ */
95
+ recordingEnabled?: boolean;
96
+ /**
97
+ * This determines the format of the recording. Defaults to `wav;l16`.
98
+ *
99
+ * @default 'wav;l16'
100
+ */
101
+ recordingFormat?: 'wav;l16' | 'mp3';
102
+ /**
103
+ * This determines whether the video is recorded during the call. Defaults to false. Only relevant for `webCall` type.
104
+ *
105
+ * You can find the video recording at `call.artifact.videoRecordingUrl` after the call is ended.
106
+ *
107
+ * @default false
108
+ * @example false
109
+ */
110
+ videoRecordingEnabled?: boolean;
111
+ /**
112
+ * 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`.
113
+ *
114
+ * You can find the packet capture at `call.artifact.pcapUrl` after the call is ended.
115
+ *
116
+ * @default true
117
+ * @example true
118
+ */
119
+ pcapEnabled?: boolean;
120
+ /**
121
+ * This is the path where the SIP packet capture will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
122
+ *
123
+ * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
124
+ *
125
+ * Usage:
126
+ * - If you want to upload the packet capture to a specific path, set this to the path. Example: `/my-assistant-captures`.
127
+ * - If you want to upload the packet capture to the root of the bucket, set this to `/`.
128
+ *
129
+ * @default '/'
130
+ * @example "/pcaps"
131
+ */
132
+ pcapS3PathPrefix?: string;
133
+ /** This is the plan for `call.artifact.transcript`. To disable, set `transcriptPlan.enabled` to false. */
134
+ transcriptPlan?: TranscriptPlan;
135
+ /**
136
+ * This is the path where the recording will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
137
+ *
138
+ * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
139
+ *
140
+ * Usage:
141
+ * - If you want to upload the recording to a specific path, set this to the path. Example: `/my-assistant-recordings`.
142
+ * - If you want to upload the recording to the root of the bucket, set this to `/`.
143
+ *
144
+ * @default '/'
145
+ */
146
+ recordingPath?: string;
147
+ }
148
+ export interface Analysis {
149
+ /** This is the summary of the call. Customize by setting `assistant.analysisPlan.summaryPrompt`. */
150
+ summary?: string;
151
+ /** This is the structured data extracted from the call. Customize by setting `assistant.analysisPlan.structuredDataPrompt` and/or `assistant.analysisPlan.structuredDataSchema`. */
152
+ structuredData?: object;
153
+ /** This is the structured data catalog of the call. Customize by setting `assistant.analysisPlan.structuredDataMultiPlan`. */
154
+ structuredDataMulti?: object[];
155
+ /** This is the evaluation of the call. Customize by setting `assistant.analysisPlan.successEvaluationPrompt` and/or `assistant.analysisPlan.successEvaluationRubric`. */
156
+ successEvaluation?: string;
157
+ }
158
+ export interface Monitor {
159
+ /** This is the URL where the assistant's calls can be listened to in real-time. To enable, set `assistant.monitorPlan.listenEnabled` to `true`. */
160
+ listenUrl?: string;
161
+ /** This is the URL where the assistant's calls can be controlled in real-time. To enable, set `assistant.monitorPlan.controlEnabled` to `true`. */
162
+ controlUrl?: string;
163
+ }
164
+ export interface OpenAIMessage {
165
+ /** @maxLength 100000000 */
166
+ content: string | null;
167
+ role: 'assistant' | 'function' | 'user' | 'system' | 'tool';
168
+ }
169
+ export interface Artifact {
170
+ /** These are the messages that were spoken during the call. */
171
+ messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
172
+ /** These are the messages that were spoken during the call, formatted for OpenAI. */
173
+ messagesOpenAIFormatted?: OpenAIMessage[];
174
+ /** This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
175
+ recordingUrl?: string;
176
+ /** This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
177
+ stereoRecordingUrl?: string;
178
+ /** This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. */
179
+ videoRecordingUrl?: string;
180
+ /** This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps. */
181
+ videoRecordingStartDelaySeconds?: number;
182
+ /** This is the transcript of the call. This is derived from `artifact.messages` but provided for convenience. */
183
+ transcript?: string;
184
+ /** This is the packet capture url for the call. This is only available for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`. */
185
+ pcapUrl?: string;
186
+ }
1
187
  export interface FallbackTranscriberPlan {
2
188
  transcribers: (FallbackAssemblyAITranscriber | FallbackAzureSpeechTranscriber | FallbackCustomTranscriber | FallbackDeepgramTranscriber | FallbackElevenLabsTranscriber | FallbackGladiaTranscriber | FallbackGoogleTranscriber | FallbackTalkscriberTranscriber | FallbackSpeechmaticsTranscriber | FallbackOpenAITranscriber)[];
3
189
  }
@@ -6,6 +192,15 @@ export interface AssemblyAITranscriber {
6
192
  provider: 'assembly-ai';
7
193
  /** This is the language that will be set for the transcription. */
8
194
  language?: 'en';
195
+ /**
196
+ * Transcripts below this confidence threshold will be discarded.
197
+ *
198
+ * @default 0.4
199
+ * @min 0
200
+ * @max 1
201
+ * @example 0.4
202
+ */
203
+ confidenceThreshold?: number;
9
204
  /** The WebSocket URL that the transcriber connects to. */
10
205
  realtimeUrl?: string;
11
206
  /** Add up to 2500 characters of custom vocabulary. */
@@ -131,9 +326,9 @@ export interface DeepgramTranscriber {
131
326
  /** This is the transcription provider that will be used. */
132
327
  provider: 'deepgram';
133
328
  /** 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 */
134
- model?: 'nova-3' | 'nova-3-general' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
329
+ model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | 'whisper' | string;
135
330
  /** 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 */
136
- language?: 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
331
+ language?: 'ar' | 'az' | 'ba' | 'bg' | 'br' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'eu' | 'fi' | 'fr' | 'fr-CA' | 'ha' | 'haw' | 'he' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'is' | 'it' | 'ja' | 'jw' | 'kn' | 'ko' | 'ko-KR' | 'ln' | 'lt' | 'lv' | 'mk' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sl' | 'sn' | 'so' | 'sr' | 'su' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'tt' | 'uk' | 'ur' | 'vi' | 'yo' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
137
332
  /**
138
333
  * 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.
139
334
  * @example false
@@ -191,6 +386,15 @@ export interface DeepgramTranscriber {
191
386
  * @example false
192
387
  */
193
388
  numerals?: boolean;
389
+ /**
390
+ * Transcripts below this confidence threshold will be discarded.
391
+ *
392
+ * @default 0.4
393
+ * @min 0
394
+ * @max 1
395
+ * @example 0.4
396
+ */
397
+ confidenceThreshold?: number;
194
398
  /** 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. */
195
399
  keywords?: string[];
196
400
  /** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
@@ -246,6 +450,15 @@ export interface GladiaTranscriber {
246
450
  * @example false
247
451
  */
248
452
  audioEnhancer?: boolean;
453
+ /**
454
+ * Transcripts below this confidence threshold will be discarded.
455
+ *
456
+ * @default 0.4
457
+ * @min 0
458
+ * @max 1
459
+ * @example 0.4
460
+ */
461
+ confidenceThreshold?: number;
249
462
  /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
250
463
  fallbackPlan?: FallbackTranscriberPlan;
251
464
  }
@@ -293,6 +506,15 @@ export interface FallbackAssemblyAITranscriber {
293
506
  provider: 'assembly-ai';
294
507
  /** This is the language that will be set for the transcription. */
295
508
  language?: 'en';
509
+ /**
510
+ * Transcripts below this confidence threshold will be discarded.
511
+ *
512
+ * @default 0.4
513
+ * @min 0
514
+ * @max 1
515
+ * @example 0.4
516
+ */
517
+ confidenceThreshold?: number;
296
518
  /** The WebSocket URL that the transcriber connects to. */
297
519
  realtimeUrl?: string;
298
520
  /** Add up to 2500 characters of custom vocabulary. */
@@ -360,9 +582,9 @@ export interface FallbackDeepgramTranscriber {
360
582
  /** This is the transcription provider that will be used. */
361
583
  provider: 'deepgram';
362
584
  /** 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 */
363
- model?: 'nova-3' | 'nova-3-general' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
585
+ model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | 'whisper' | string;
364
586
  /** 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 */
365
- language?: 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
587
+ language?: 'ar' | 'az' | 'ba' | 'bg' | 'br' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'eu' | 'fi' | 'fr' | 'fr-CA' | 'ha' | 'haw' | 'he' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'is' | 'it' | 'ja' | 'jw' | 'kn' | 'ko' | 'ko-KR' | 'ln' | 'lt' | 'lv' | 'mk' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sl' | 'sn' | 'so' | 'sr' | 'su' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'tt' | 'uk' | 'ur' | 'vi' | 'yo' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
366
588
  /**
367
589
  * 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.
368
590
  * @example false
@@ -420,6 +642,15 @@ export interface FallbackDeepgramTranscriber {
420
642
  * @example false
421
643
  */
422
644
  numerals?: boolean;
645
+ /**
646
+ * Transcripts below this confidence threshold will be discarded.
647
+ *
648
+ * @default 0.4
649
+ * @min 0
650
+ * @max 1
651
+ * @example 0.4
652
+ */
653
+ confidenceThreshold?: number;
423
654
  /** 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. */
424
655
  keywords?: string[];
425
656
  /** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
@@ -471,6 +702,15 @@ export interface FallbackGladiaTranscriber {
471
702
  * @example false
472
703
  */
473
704
  audioEnhancer?: boolean;
705
+ /**
706
+ * Transcripts below this confidence threshold will be discarded.
707
+ *
708
+ * @default 0.4
709
+ * @min 0
710
+ * @max 1
711
+ * @example 0.4
712
+ */
713
+ confidenceThreshold?: number;
474
714
  }
475
715
  export interface FallbackSpeechmaticsTranscriber {
476
716
  /** This is the transcription provider that will be used. */
@@ -530,7 +770,7 @@ export interface Condition {
530
770
  * This is the value you want to compare against the parameter.
531
771
  * @maxLength 1000
532
772
  */
533
- value: object;
773
+ value: string;
534
774
  }
535
775
  export interface ToolMessageStart {
536
776
  /**
@@ -1425,32 +1665,232 @@ export interface CreateCustomKnowledgeBaseDTO {
1425
1665
  */
1426
1666
  server: Server;
1427
1667
  }
1428
- export interface OpenAIMessage {
1429
- /** @maxLength 100000000 */
1430
- content: string | null;
1431
- role: 'assistant' | 'function' | 'user' | 'system' | 'tool';
1432
- }
1433
- export interface AnyscaleModel {
1434
- /** This is the starting state for the conversation. */
1435
- messages?: OpenAIMessage[];
1668
+ export interface KnowledgeBase {
1436
1669
  /**
1437
- * These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
1438
- *
1439
- * Both `tools` and `toolIds` can be used together.
1670
+ * The name of the knowledge base
1671
+ * @example "My Knowledge Base"
1440
1672
  */
1441
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1673
+ name: string;
1442
1674
  /**
1443
- * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1444
- *
1445
- * Both `tools` and `toolIds` can be used together.
1675
+ * The provider of the knowledge base
1676
+ * @example "google"
1446
1677
  */
1447
- toolIds?: string[];
1448
- /** These are the options for the knowledge base. */
1449
- knowledgeBase?: CreateCustomKnowledgeBaseDTO;
1450
- /** This is the ID of the knowledge base the model will use. */
1451
- knowledgeBaseId?: string;
1452
- provider: 'anyscale';
1453
- /** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
1678
+ provider: 'google';
1679
+ /** The model to use for the knowledge base */
1680
+ model?: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
1681
+ /** A description of the knowledge base */
1682
+ description: string;
1683
+ /** The file IDs associated with this knowledge base */
1684
+ fileIds: string[];
1685
+ }
1686
+ export interface CreateQueryToolDTO {
1687
+ /**
1688
+ * This determines if the tool is async.
1689
+ *
1690
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1691
+ *
1692
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1693
+ *
1694
+ * Defaults to synchronous (`false`).
1695
+ * @example false
1696
+ */
1697
+ async?: boolean;
1698
+ /**
1699
+ * These are the messages that will be spoken to the user as the tool is running.
1700
+ *
1701
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1702
+ */
1703
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1704
+ /** The type of tool. "query" for Query tool. */
1705
+ type: 'query';
1706
+ /** The knowledge bases to query */
1707
+ knowledgeBases?: KnowledgeBase[];
1708
+ /**
1709
+ * This is the function definition of the tool.
1710
+ *
1711
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1712
+ *
1713
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1714
+ */
1715
+ function?: OpenAIFunction;
1716
+ /**
1717
+ * This is the server that will be hit when this tool is requested by the model.
1718
+ *
1719
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1720
+ *
1721
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1722
+ */
1723
+ server?: Server;
1724
+ }
1725
+ export interface CreateGoogleCalendarCreateEventToolDTO {
1726
+ /**
1727
+ * This determines if the tool is async.
1728
+ *
1729
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1730
+ *
1731
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1732
+ *
1733
+ * Defaults to synchronous (`false`).
1734
+ * @example false
1735
+ */
1736
+ async?: boolean;
1737
+ /**
1738
+ * These are the messages that will be spoken to the user as the tool is running.
1739
+ *
1740
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1741
+ */
1742
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1743
+ /** The type of tool. "google.calendar.event.create" for Google Calendar tool. */
1744
+ type: 'google.calendar.event.create';
1745
+ /**
1746
+ * This is the function definition of the tool.
1747
+ *
1748
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1749
+ *
1750
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1751
+ */
1752
+ function?: OpenAIFunction;
1753
+ /**
1754
+ * This is the server that will be hit when this tool is requested by the model.
1755
+ *
1756
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1757
+ *
1758
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1759
+ */
1760
+ server?: Server;
1761
+ }
1762
+ export interface CreateGoogleSheetsRowAppendToolDTO {
1763
+ /**
1764
+ * This determines if the tool is async.
1765
+ *
1766
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1767
+ *
1768
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1769
+ *
1770
+ * Defaults to synchronous (`false`).
1771
+ * @example false
1772
+ */
1773
+ async?: boolean;
1774
+ /**
1775
+ * These are the messages that will be spoken to the user as the tool is running.
1776
+ *
1777
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1778
+ */
1779
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1780
+ /** The type of tool. "google.sheets.row.append" for Google Sheets tool. */
1781
+ type: 'google.sheets.row.append';
1782
+ /**
1783
+ * This is the function definition of the tool.
1784
+ *
1785
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1786
+ *
1787
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1788
+ */
1789
+ function?: OpenAIFunction;
1790
+ /**
1791
+ * This is the server that will be hit when this tool is requested by the model.
1792
+ *
1793
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1794
+ *
1795
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1796
+ */
1797
+ server?: Server;
1798
+ }
1799
+ export interface CreateGoogleCalendarCheckAvailabilityToolDTO {
1800
+ /**
1801
+ * This determines if the tool is async.
1802
+ *
1803
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1804
+ *
1805
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1806
+ *
1807
+ * Defaults to synchronous (`false`).
1808
+ * @example false
1809
+ */
1810
+ async?: boolean;
1811
+ /**
1812
+ * These are the messages that will be spoken to the user as the tool is running.
1813
+ *
1814
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1815
+ */
1816
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1817
+ /** The type of tool. "google.calendar.availability.check" for Google Calendar availability check tool. */
1818
+ type: 'google.calendar.availability.check';
1819
+ /**
1820
+ * This is the function definition of the tool.
1821
+ *
1822
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1823
+ *
1824
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1825
+ */
1826
+ function?: OpenAIFunction;
1827
+ /**
1828
+ * This is the server that will be hit when this tool is requested by the model.
1829
+ *
1830
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1831
+ *
1832
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1833
+ */
1834
+ server?: Server;
1835
+ }
1836
+ export interface CreateSlackSendMessageToolDTO {
1837
+ /**
1838
+ * This determines if the tool is async.
1839
+ *
1840
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1841
+ *
1842
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1843
+ *
1844
+ * Defaults to synchronous (`false`).
1845
+ * @example false
1846
+ */
1847
+ async?: boolean;
1848
+ /**
1849
+ * These are the messages that will be spoken to the user as the tool is running.
1850
+ *
1851
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1852
+ */
1853
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1854
+ /** The type of tool. "slack.message.send" for Slack send message tool. */
1855
+ type: 'slack.message.send';
1856
+ /**
1857
+ * This is the function definition of the tool.
1858
+ *
1859
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1860
+ *
1861
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1862
+ */
1863
+ function?: OpenAIFunction;
1864
+ /**
1865
+ * This is the server that will be hit when this tool is requested by the model.
1866
+ *
1867
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1868
+ *
1869
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1870
+ */
1871
+ server?: Server;
1872
+ }
1873
+ export interface AnyscaleModel {
1874
+ /** This is the starting state for the conversation. */
1875
+ messages?: OpenAIMessage[];
1876
+ /**
1877
+ * These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
1878
+ *
1879
+ * Both `tools` and `toolIds` can be used together.
1880
+ */
1881
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1882
+ /**
1883
+ * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1884
+ *
1885
+ * Both `tools` and `toolIds` can be used together.
1886
+ */
1887
+ toolIds?: string[];
1888
+ /** These are the options for the knowledge base. */
1889
+ knowledgeBase?: CreateCustomKnowledgeBaseDTO;
1890
+ /** This is the ID of the knowledge base the model will use. */
1891
+ knowledgeBaseId?: string;
1892
+ provider: 'anyscale';
1893
+ /** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
1454
1894
  model: string;
1455
1895
  /**
1456
1896
  * This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
@@ -1500,7 +1940,7 @@ export interface AnthropicModel {
1500
1940
  *
1501
1941
  * Both `tools` and `toolIds` can be used together.
1502
1942
  */
1503
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1943
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1504
1944
  /**
1505
1945
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1506
1946
  *
@@ -1559,7 +1999,7 @@ export interface CerebrasModel {
1559
1999
  *
1560
2000
  * Both `tools` and `toolIds` can be used together.
1561
2001
  */
1562
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2002
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1563
2003
  /**
1564
2004
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1565
2005
  *
@@ -1611,7 +2051,7 @@ export interface CustomLLMModel {
1611
2051
  *
1612
2052
  * Both `tools` and `toolIds` can be used together.
1613
2053
  */
1614
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2054
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1615
2055
  /**
1616
2056
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1617
2057
  *
@@ -1684,7 +2124,7 @@ export interface DeepInfraModel {
1684
2124
  *
1685
2125
  * Both `tools` and `toolIds` can be used together.
1686
2126
  */
1687
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2127
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1688
2128
  /**
1689
2129
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1690
2130
  *
@@ -1736,7 +2176,7 @@ export interface DeepSeekModel {
1736
2176
  *
1737
2177
  * Both `tools` and `toolIds` can be used together.
1738
2178
  */
1739
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2179
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1740
2180
  /**
1741
2181
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1742
2182
  *
@@ -1824,7 +2264,7 @@ export interface GoogleModel {
1824
2264
  *
1825
2265
  * Both `tools` and `toolIds` can be used together.
1826
2266
  */
1827
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2267
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1828
2268
  /**
1829
2269
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1830
2270
  *
@@ -1881,7 +2321,7 @@ export interface GroqModel {
1881
2321
  *
1882
2322
  * Both `tools` and `toolIds` can be used together.
1883
2323
  */
1884
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2324
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1885
2325
  /**
1886
2326
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1887
2327
  *
@@ -1933,7 +2373,7 @@ export interface InflectionAIModel {
1933
2373
  *
1934
2374
  * Both `tools` and `toolIds` can be used together.
1935
2375
  */
1936
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2376
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1937
2377
  /**
1938
2378
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1939
2379
  *
@@ -1985,7 +2425,7 @@ export interface OpenAIModel {
1985
2425
  *
1986
2426
  * Both `tools` and `toolIds` can be used together.
1987
2427
  */
1988
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2428
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1989
2429
  /**
1990
2430
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1991
2431
  *
@@ -1999,12 +2439,12 @@ export interface OpenAIModel {
1999
2439
  /** This is the provider that will be used for the model. */
2000
2440
  provider: 'openai';
2001
2441
  /** This is the OpenAI model that will be used. */
2002
- model: 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | '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';
2442
+ model: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3' | 'o3-mini' | 'o4-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
2003
2443
  /**
2004
2444
  * These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.
2005
2445
  * @example ["gpt-4-0125-preview","gpt-4-0613"]
2006
2446
  */
2007
- fallbackModels?: 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | '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';
2447
+ fallbackModels?: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3' | 'o3-mini' | 'o4-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
2008
2448
  /**
2009
2449
  * This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
2010
2450
  * @min 0
@@ -2043,7 +2483,7 @@ export interface OpenRouterModel {
2043
2483
  *
2044
2484
  * Both `tools` and `toolIds` can be used together.
2045
2485
  */
2046
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2486
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2047
2487
  /**
2048
2488
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2049
2489
  *
@@ -2095,7 +2535,7 @@ export interface PerplexityAIModel {
2095
2535
  *
2096
2536
  * Both `tools` and `toolIds` can be used together.
2097
2537
  */
2098
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2538
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2099
2539
  /**
2100
2540
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2101
2541
  *
@@ -2147,7 +2587,7 @@ export interface TogetherAIModel {
2147
2587
  *
2148
2588
  * Both `tools` and `toolIds` can be used together.
2149
2589
  */
2150
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2590
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2151
2591
  /**
2152
2592
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2153
2593
  *
@@ -2193,8 +2633,11 @@ export interface TogetherAIModel {
2193
2633
  }
2194
2634
  export interface AIEdgeCondition {
2195
2635
  type: 'ai';
2196
- /** @maxLength 100 */
2197
- matches: string[];
2636
+ /**
2637
+ * This is the prompt for the AI edge condition. It should evaluate to a boolean.
2638
+ * @maxLength 1000
2639
+ */
2640
+ prompt: string;
2198
2641
  }
2199
2642
  export interface LogicEdgeCondition {
2200
2643
  type: 'logic';
@@ -2215,6 +2658,8 @@ export interface Edge {
2215
2658
  }
2216
2659
  export interface Workflow {
2217
2660
  nodes: (Say | Gather | ApiRequest | Hangup | Transfer)[];
2661
+ /** These are the options for the workflow's LLM. */
2662
+ model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
2218
2663
  id: string;
2219
2664
  orgId: string;
2220
2665
  /** @format date-time */
@@ -2233,7 +2678,7 @@ export interface VapiModel {
2233
2678
  *
2234
2679
  * Both `tools` and `toolIds` can be used together.
2235
2680
  */
2236
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2681
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2237
2682
  /**
2238
2683
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2239
2684
  *
@@ -2289,7 +2734,7 @@ export interface XaiModel {
2289
2734
  *
2290
2735
  * Both `tools` and `toolIds` can be used together.
2291
2736
  */
2292
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2737
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2293
2738
  /**
2294
2739
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2295
2740
  *
@@ -2345,6 +2790,15 @@ export interface ExactReplacement {
2345
2790
  * - Replace a company name with its phonetic pronunciation: { type: 'exact', key: 'Vapi', value: 'Vappy' }
2346
2791
  */
2347
2792
  type: 'exact';
2793
+ /**
2794
+ * This option let's you control whether to replace all instances of the key or only the first one. By default, it only replaces the first instance.
2795
+ * Examples:
2796
+ * - For { type: 'exact', key: 'hello', value: 'hi', replaceAllEnabled: false }. Before: "hello world, hello universe" | After: "hi world, hello universe"
2797
+ * - For { type: 'exact', key: 'hello', value: 'hi', replaceAllEnabled: true }. Before: "hello world, hello universe" | After: "hi world, hi universe"
2798
+ * @default false
2799
+ * @default false
2800
+ */
2801
+ replaceAllEnabled?: boolean;
2348
2802
  /** This is the key to replace. */
2349
2803
  key: string;
2350
2804
  /**
@@ -2494,6 +2948,12 @@ export interface FallbackPlan {
2494
2948
  voices: (FallbackAzureVoice | FallbackCartesiaVoice | FallbackHumeVoice | FallbackCustomVoice | FallbackDeepgramVoice | FallbackElevenLabsVoice | FallbackVapiVoice | FallbackLMNTVoice | FallbackOpenAIVoice | FallbackPlayHTVoice | FallbackRimeAIVoice | FallbackSmallestAIVoice | FallbackTavusVoice)[];
2495
2949
  }
2496
2950
  export interface AzureVoice {
2951
+ /**
2952
+ * This is the flag to toggle voice caching for the assistant.
2953
+ * @default true
2954
+ * @example true
2955
+ */
2956
+ cachingEnabled?: boolean;
2497
2957
  /** This is the voice provider that will be used. */
2498
2958
  provider: 'azure';
2499
2959
  /** This is the provider-specific ID that will be used. */
@@ -2510,12 +2970,17 @@ export interface AzureVoice {
2510
2970
  fallbackPlan?: FallbackPlan;
2511
2971
  }
2512
2972
  export interface CartesiaExperimentalControls {
2513
- /** @example "normal" */
2514
- speed?: 'slowest' | 'slow' | 'normal' | 'fast' | 'fastest';
2973
+ speed?: 'slowest' | 'slow' | 'normal' | 'fast' | 'fastest' | number;
2515
2974
  /** @example ["happiness:high"] */
2516
2975
  emotion?: 'anger:lowest' | 'anger:low' | 'anger:high' | 'anger:highest' | 'positivity:lowest' | 'positivity:low' | 'positivity:high' | 'positivity:highest' | 'surprise:lowest' | 'surprise:low' | 'surprise:high' | 'surprise:highest' | 'sadness:lowest' | 'sadness:low' | 'sadness:high' | 'sadness:highest' | 'curiosity:lowest' | 'curiosity:low' | 'curiosity:high' | 'curiosity:highest';
2517
2976
  }
2518
2977
  export interface CartesiaVoice {
2978
+ /**
2979
+ * This is the flag to toggle voice caching for the assistant.
2980
+ * @default true
2981
+ * @example true
2982
+ */
2983
+ cachingEnabled?: boolean;
2519
2984
  /** This is the voice provider that will be used. */
2520
2985
  provider: 'cartesia';
2521
2986
  /** The ID of the particular voice you want to use. */
@@ -2538,6 +3003,12 @@ export interface CartesiaVoice {
2538
3003
  fallbackPlan?: FallbackPlan;
2539
3004
  }
2540
3005
  export interface CustomVoice {
3006
+ /**
3007
+ * This is the flag to toggle voice caching for the assistant.
3008
+ * @default true
3009
+ * @example true
3010
+ */
3011
+ cachingEnabled?: boolean;
2541
3012
  /** This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported. */
2542
3013
  provider: 'custom-voice';
2543
3014
  /** This is the plan for chunking the model output before it is sent to the voice provider. */
@@ -2571,10 +3042,24 @@ export interface CustomVoice {
2571
3042
  fallbackPlan?: FallbackPlan;
2572
3043
  }
2573
3044
  export interface DeepgramVoice {
3045
+ /**
3046
+ * This is the flag to toggle voice caching for the assistant.
3047
+ * @default true
3048
+ * @example true
3049
+ */
3050
+ cachingEnabled?: boolean;
2574
3051
  /** This is the voice provider that will be used. */
2575
3052
  provider: 'deepgram';
2576
- /** This is the provider-specific ID that will be used. */
2577
- voiceId: 'asteria' | 'luna' | 'stella' | 'athena' | 'hera' | 'orion' | 'arcas' | 'perseus' | 'angus' | 'orpheus' | 'helios' | 'zeus' | string;
3053
+ /**
3054
+ * This is the Deepgram Voice ID
3055
+ * This is the provider-specific ID that will be used.
3056
+ */
3057
+ 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';
3058
+ /**
3059
+ * This is the model that will be used. Defaults to 'aura-2' when not specified.
3060
+ * @example "aura-2"
3061
+ */
3062
+ model?: 'aura' | 'aura-2';
2578
3063
  /**
2579
3064
  * If set to true, this will add mip_opt_out=true as a query parameter of all API requests. See https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program#want-to-opt-out
2580
3065
  *
@@ -2591,6 +3076,12 @@ export interface DeepgramVoice {
2591
3076
  fallbackPlan?: FallbackPlan;
2592
3077
  }
2593
3078
  export interface ElevenLabsVoice {
3079
+ /**
3080
+ * This is the flag to toggle voice caching for the assistant.
3081
+ * @default true
3082
+ * @example true
3083
+ */
3084
+ cachingEnabled?: boolean;
2594
3085
  /** This is the voice provider that will be used. */
2595
3086
  provider: '11labs';
2596
3087
  /** This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library. */
@@ -2642,6 +3133,11 @@ export interface ElevenLabsVoice {
2642
3133
  * @example false
2643
3134
  */
2644
3135
  enableSsmlParsing?: boolean;
3136
+ /**
3137
+ * Defines the auto mode for voice settings. Defaults to false.
3138
+ * @example false
3139
+ */
3140
+ autoMode?: boolean;
2645
3141
  /**
2646
3142
  * This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified.
2647
3143
  * @example "eleven_turbo_v2_5"
@@ -2655,6 +3151,12 @@ export interface ElevenLabsVoice {
2655
3151
  fallbackPlan?: FallbackPlan;
2656
3152
  }
2657
3153
  export interface HumeVoice {
3154
+ /**
3155
+ * This is the flag to toggle voice caching for the assistant.
3156
+ * @default true
3157
+ * @example true
3158
+ */
3159
+ cachingEnabled?: boolean;
2658
3160
  /** This is the voice provider that will be used. */
2659
3161
  provider: 'hume';
2660
3162
  /**
@@ -2682,6 +3184,12 @@ export interface HumeVoice {
2682
3184
  fallbackPlan?: FallbackPlan;
2683
3185
  }
2684
3186
  export interface LMNTVoice {
3187
+ /**
3188
+ * This is the flag to toggle voice caching for the assistant.
3189
+ * @default true
3190
+ * @example true
3191
+ */
3192
+ cachingEnabled?: boolean;
2685
3193
  /** This is the voice provider that will be used. */
2686
3194
  provider: 'lmnt';
2687
3195
  /** This is the provider-specific ID that will be used. */
@@ -2699,9 +3207,15 @@ export interface LMNTVoice {
2699
3207
  fallbackPlan?: FallbackPlan;
2700
3208
  }
2701
3209
  export interface NeuphonicVoice {
2702
- /** This is the voice provider that will be used. */
2703
- provider: 'neuphonic';
2704
- /** This is the provider-specific ID that will be used. */
3210
+ /**
3211
+ * This is the flag to toggle voice caching for the assistant.
3212
+ * @default true
3213
+ * @example true
3214
+ */
3215
+ cachingEnabled?: boolean;
3216
+ /** This is the voice provider that will be used. */
3217
+ provider: 'neuphonic';
3218
+ /** This is the provider-specific ID that will be used. */
2705
3219
  voiceId: string;
2706
3220
  /**
2707
3221
  * This is the model that will be used. Defaults to 'neu_fast' if not specified.
@@ -2726,13 +3240,19 @@ export interface NeuphonicVoice {
2726
3240
  fallbackPlan?: FallbackPlan;
2727
3241
  }
2728
3242
  export interface OpenAIVoice {
3243
+ /**
3244
+ * This is the flag to toggle voice caching for the assistant.
3245
+ * @default true
3246
+ * @example true
3247
+ */
3248
+ cachingEnabled?: boolean;
2729
3249
  /** This is the voice provider that will be used. */
2730
3250
  provider: 'openai';
2731
3251
  /**
2732
3252
  * This is the provider-specific ID that will be used.
2733
3253
  * Please note that ash, ballad, coral, sage, and verse may only be used with realtime models.
2734
3254
  */
2735
- voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | 'ash' | 'ballad' | 'coral' | 'sage' | 'verse';
3255
+ voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | string;
2736
3256
  /** This is the model that will be used for text-to-speech. */
2737
3257
  model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
2738
3258
  /**
@@ -2754,6 +3274,12 @@ export interface OpenAIVoice {
2754
3274
  fallbackPlan?: FallbackPlan;
2755
3275
  }
2756
3276
  export interface PlayHTVoice {
3277
+ /**
3278
+ * This is the flag to toggle voice caching for the assistant.
3279
+ * @default true
3280
+ * @example true
3281
+ */
3282
+ cachingEnabled?: boolean;
2757
3283
  /** This is the voice provider that will be used. */
2758
3284
  provider: 'playht';
2759
3285
  /** This is the provider-specific ID that will be used. */
@@ -2808,6 +3334,12 @@ export interface PlayHTVoice {
2808
3334
  fallbackPlan?: FallbackPlan;
2809
3335
  }
2810
3336
  export interface RimeAIVoice {
3337
+ /**
3338
+ * This is the flag to toggle voice caching for the assistant.
3339
+ * @default true
3340
+ * @example true
3341
+ */
3342
+ cachingEnabled?: boolean;
2811
3343
  /** This is the voice provider that will be used. */
2812
3344
  provider: 'rime-ai';
2813
3345
  /** This is the provider-specific ID that will be used. */
@@ -2849,6 +3381,12 @@ export interface RimeAIVoice {
2849
3381
  fallbackPlan?: FallbackPlan;
2850
3382
  }
2851
3383
  export interface SmallestAIVoice {
3384
+ /**
3385
+ * This is the flag to toggle voice caching for the assistant.
3386
+ * @default true
3387
+ * @example true
3388
+ */
3389
+ cachingEnabled?: boolean;
2852
3390
  /** This is the voice provider that will be used. */
2853
3391
  provider: 'smallest-ai';
2854
3392
  /** This is the provider-specific ID that will be used. */
@@ -2906,6 +3444,12 @@ export interface TavusConversationProperties {
2906
3444
  awsAssumeRoleArn?: string;
2907
3445
  }
2908
3446
  export interface TavusVoice {
3447
+ /**
3448
+ * This is the flag to toggle voice caching for the assistant.
3449
+ * @default true
3450
+ * @example true
3451
+ */
3452
+ cachingEnabled?: boolean;
2909
3453
  /** This is the voice provider that will be used. */
2910
3454
  provider: 'tavus';
2911
3455
  /** This is the provider-specific ID that will be used. */
@@ -2928,6 +3472,12 @@ export interface TavusVoice {
2928
3472
  fallbackPlan?: FallbackPlan;
2929
3473
  }
2930
3474
  export interface VapiVoice {
3475
+ /**
3476
+ * This is the flag to toggle voice caching for the assistant.
3477
+ * @default true
3478
+ * @example true
3479
+ */
3480
+ cachingEnabled?: boolean;
2931
3481
  /** This is the voice provider that will be used. */
2932
3482
  provider: 'vapi';
2933
3483
  /** The voices provided by Vapi */
@@ -2954,6 +3504,12 @@ export interface VapiVoice {
2954
3504
  fallbackPlan?: FallbackPlan;
2955
3505
  }
2956
3506
  export interface FallbackAzureVoice {
3507
+ /**
3508
+ * This is the flag to toggle voice caching for the assistant.
3509
+ * @default true
3510
+ * @example true
3511
+ */
3512
+ cachingEnabled?: boolean;
2957
3513
  /** This is the voice provider that will be used. */
2958
3514
  provider: 'azure';
2959
3515
  /** This is the provider-specific ID that will be used. */
@@ -2968,6 +3524,12 @@ export interface FallbackAzureVoice {
2968
3524
  chunkPlan?: ChunkPlan;
2969
3525
  }
2970
3526
  export interface FallbackCartesiaVoice {
3527
+ /**
3528
+ * This is the flag to toggle voice caching for the assistant.
3529
+ * @default true
3530
+ * @example true
3531
+ */
3532
+ cachingEnabled?: boolean;
2971
3533
  /** This is the voice provider that will be used. */
2972
3534
  provider: 'cartesia';
2973
3535
  /** The ID of the particular voice you want to use. */
@@ -2988,6 +3550,12 @@ export interface FallbackCartesiaVoice {
2988
3550
  chunkPlan?: ChunkPlan;
2989
3551
  }
2990
3552
  export interface FallbackCustomVoice {
3553
+ /**
3554
+ * This is the flag to toggle voice caching for the assistant.
3555
+ * @default true
3556
+ * @example true
3557
+ */
3558
+ cachingEnabled?: boolean;
2991
3559
  /** This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported. */
2992
3560
  provider: 'custom-voice';
2993
3561
  /**
@@ -3019,10 +3587,24 @@ export interface FallbackCustomVoice {
3019
3587
  chunkPlan?: ChunkPlan;
3020
3588
  }
3021
3589
  export interface FallbackDeepgramVoice {
3590
+ /**
3591
+ * This is the flag to toggle voice caching for the assistant.
3592
+ * @default true
3593
+ * @example true
3594
+ */
3595
+ cachingEnabled?: boolean;
3022
3596
  /** This is the voice provider that will be used. */
3023
3597
  provider: 'deepgram';
3024
- /** This is the provider-specific ID that will be used. */
3025
- voiceId: 'asteria' | 'luna' | 'stella' | 'athena' | 'hera' | 'orion' | 'arcas' | 'perseus' | 'angus' | 'orpheus' | 'helios' | 'zeus' | string;
3598
+ /**
3599
+ * This is the Deepgram Voice ID
3600
+ * This is the provider-specific ID that will be used.
3601
+ */
3602
+ 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';
3603
+ /**
3604
+ * This is the model that will be used. Defaults to 'aura-2' when not specified.
3605
+ * @example "aura-2"
3606
+ */
3607
+ model?: 'aura' | 'aura-2';
3026
3608
  /**
3027
3609
  * If set to true, this will add mip_opt_out=true as a query parameter of all API requests. See https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program#want-to-opt-out
3028
3610
  *
@@ -3037,6 +3619,12 @@ export interface FallbackDeepgramVoice {
3037
3619
  chunkPlan?: ChunkPlan;
3038
3620
  }
3039
3621
  export interface FallbackElevenLabsVoice {
3622
+ /**
3623
+ * This is the flag to toggle voice caching for the assistant.
3624
+ * @default true
3625
+ * @example true
3626
+ */
3627
+ cachingEnabled?: boolean;
3040
3628
  /** This is the voice provider that will be used. */
3041
3629
  provider: '11labs';
3042
3630
  /** This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library. */
@@ -3088,6 +3676,11 @@ export interface FallbackElevenLabsVoice {
3088
3676
  * @example false
3089
3677
  */
3090
3678
  enableSsmlParsing?: boolean;
3679
+ /**
3680
+ * Defines the auto mode for voice settings. Defaults to false.
3681
+ * @example false
3682
+ */
3683
+ autoMode?: boolean;
3091
3684
  /**
3092
3685
  * This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified.
3093
3686
  * @example "eleven_turbo_v2_5"
@@ -3099,6 +3692,12 @@ export interface FallbackElevenLabsVoice {
3099
3692
  chunkPlan?: ChunkPlan;
3100
3693
  }
3101
3694
  export interface FallbackHumeVoice {
3695
+ /**
3696
+ * This is the flag to toggle voice caching for the assistant.
3697
+ * @default true
3698
+ * @example true
3699
+ */
3700
+ cachingEnabled?: boolean;
3102
3701
  /** This is the voice provider that will be used. */
3103
3702
  provider: 'hume';
3104
3703
  /**
@@ -3124,6 +3723,12 @@ export interface FallbackHumeVoice {
3124
3723
  chunkPlan?: ChunkPlan;
3125
3724
  }
3126
3725
  export interface FallbackLMNTVoice {
3726
+ /**
3727
+ * This is the flag to toggle voice caching for the assistant.
3728
+ * @default true
3729
+ * @example true
3730
+ */
3731
+ cachingEnabled?: boolean;
3127
3732
  /** This is the voice provider that will be used. */
3128
3733
  provider: 'lmnt';
3129
3734
  /** This is the provider-specific ID that will be used. */
@@ -3139,6 +3744,12 @@ export interface FallbackLMNTVoice {
3139
3744
  chunkPlan?: ChunkPlan;
3140
3745
  }
3141
3746
  export interface FallbackNeuphonicVoice {
3747
+ /**
3748
+ * This is the flag to toggle voice caching for the assistant.
3749
+ * @default true
3750
+ * @example true
3751
+ */
3752
+ cachingEnabled?: boolean;
3142
3753
  /** This is the voice provider that will be used. */
3143
3754
  provider: 'neuphonic';
3144
3755
  /** This is the provider-specific ID that will be used. */
@@ -3164,13 +3775,19 @@ export interface FallbackNeuphonicVoice {
3164
3775
  chunkPlan?: ChunkPlan;
3165
3776
  }
3166
3777
  export interface FallbackOpenAIVoice {
3778
+ /**
3779
+ * This is the flag to toggle voice caching for the assistant.
3780
+ * @default true
3781
+ * @example true
3782
+ */
3783
+ cachingEnabled?: boolean;
3167
3784
  /** This is the voice provider that will be used. */
3168
3785
  provider: 'openai';
3169
3786
  /**
3170
3787
  * This is the provider-specific ID that will be used.
3171
3788
  * Please note that ash, ballad, coral, sage, and verse may only be used with realtime models.
3172
3789
  */
3173
- voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | 'ash' | 'ballad' | 'coral' | 'sage' | 'verse';
3790
+ voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | string;
3174
3791
  /** This is the model that will be used for text-to-speech. */
3175
3792
  model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
3176
3793
  /**
@@ -3190,6 +3807,12 @@ export interface FallbackOpenAIVoice {
3190
3807
  chunkPlan?: ChunkPlan;
3191
3808
  }
3192
3809
  export interface FallbackPlayHTVoice {
3810
+ /**
3811
+ * This is the flag to toggle voice caching for the assistant.
3812
+ * @default true
3813
+ * @example true
3814
+ */
3815
+ cachingEnabled?: boolean;
3193
3816
  /** This is the voice provider that will be used. */
3194
3817
  provider: 'playht';
3195
3818
  /** This is the provider-specific ID that will be used. */
@@ -3242,6 +3865,12 @@ export interface FallbackPlayHTVoice {
3242
3865
  chunkPlan?: ChunkPlan;
3243
3866
  }
3244
3867
  export interface FallbackRimeAIVoice {
3868
+ /**
3869
+ * This is the flag to toggle voice caching for the assistant.
3870
+ * @default true
3871
+ * @example true
3872
+ */
3873
+ cachingEnabled?: boolean;
3245
3874
  /** This is the voice provider that will be used. */
3246
3875
  provider: 'rime-ai';
3247
3876
  /** This is the provider-specific ID that will be used. */
@@ -3281,6 +3910,12 @@ export interface FallbackRimeAIVoice {
3281
3910
  chunkPlan?: ChunkPlan;
3282
3911
  }
3283
3912
  export interface FallbackSmallestAIVoice {
3913
+ /**
3914
+ * This is the flag to toggle voice caching for the assistant.
3915
+ * @default true
3916
+ * @example true
3917
+ */
3918
+ cachingEnabled?: boolean;
3284
3919
  /** This is the voice provider that will be used. */
3285
3920
  provider: 'smallest-ai';
3286
3921
  /** This is the provider-specific ID that will be used. */
@@ -3296,6 +3931,12 @@ export interface FallbackSmallestAIVoice {
3296
3931
  chunkPlan?: ChunkPlan;
3297
3932
  }
3298
3933
  export interface FallbackTavusVoice {
3934
+ /**
3935
+ * This is the flag to toggle voice caching for the assistant.
3936
+ * @default true
3937
+ * @example true
3938
+ */
3939
+ cachingEnabled?: boolean;
3299
3940
  /** This is the voice provider that will be used. */
3300
3941
  provider: 'tavus';
3301
3942
  /** This is the provider-specific ID that will be used. */
@@ -3316,6 +3957,12 @@ export interface FallbackTavusVoice {
3316
3957
  chunkPlan?: ChunkPlan;
3317
3958
  }
3318
3959
  export interface FallbackVapiVoice {
3960
+ /**
3961
+ * This is the flag to toggle voice caching for the assistant.
3962
+ * @default true
3963
+ * @example true
3964
+ */
3965
+ cachingEnabled?: boolean;
3319
3966
  /** This is the voice provider that will be used. */
3320
3967
  provider: 'vapi';
3321
3968
  /** The voices provided by Vapi */
@@ -3621,7 +4268,7 @@ export interface CreateCloudflareCredentialDTO {
3621
4268
  name?: string;
3622
4269
  }
3623
4270
  export interface OAuth2AuthenticationPlan {
3624
- type: 'oauth2';
4271
+ type: 'oauth2' | 'aws-sts';
3625
4272
  /** This is the OAuth2 URL. */
3626
4273
  url: string;
3627
4274
  /** This is the OAuth2 client ID. */
@@ -4096,6 +4743,28 @@ export interface CreateGoogleCalendarOAuth2AuthorizationCredentialDTO {
4096
4743
  */
4097
4744
  name?: string;
4098
4745
  }
4746
+ export interface CreateGoogleSheetsOAuth2AuthorizationCredentialDTO {
4747
+ provider: 'google.sheets.oauth2-authorization';
4748
+ /** The authorization ID for the OAuth2 authorization */
4749
+ authorizationId: string;
4750
+ /**
4751
+ * This is the name of credential. This is just for your reference.
4752
+ * @minLength 1
4753
+ * @maxLength 40
4754
+ */
4755
+ name?: string;
4756
+ }
4757
+ export interface CreateSlackOAuth2AuthorizationCredentialDTO {
4758
+ provider: 'slack.oauth2-authorization';
4759
+ /** The authorization ID for the OAuth2 authorization */
4760
+ authorizationId: string;
4761
+ /**
4762
+ * This is the name of credential. This is just for your reference.
4763
+ * @minLength 1
4764
+ * @maxLength 40
4765
+ */
4766
+ name?: string;
4767
+ }
4099
4768
  export interface TransferAssistantHookAction {
4100
4769
  /** This is the type of action - must be "transfer" */
4101
4770
  type: 'transfer';
@@ -4345,111 +5014,6 @@ export interface AnalysisPlan {
4345
5014
  /** This is the plan for generating the success evaluation of the call. This outputs to `call.analysis.successEvaluation`. */
4346
5015
  successEvaluationPlan?: SuccessEvaluationPlan;
4347
5016
  }
4348
- export interface TranscriptPlan {
4349
- /**
4350
- * This determines whether the transcript is stored in `call.artifact.transcript`. Defaults to true.
4351
- *
4352
- * @default true
4353
- * @example true
4354
- */
4355
- enabled?: boolean;
4356
- /**
4357
- * This is the name of the assistant in the transcript. Defaults to 'AI'.
4358
- *
4359
- * Usage:
4360
- * - If you want to change the name of the assistant in the transcript, set this. Example, here is what the transcript would look like with `assistantName` set to 'Buyer':
4361
- * ```
4362
- * User: Hello, how are you?
4363
- * Buyer: I'm fine.
4364
- * User: Do you want to buy a car?
4365
- * Buyer: No.
4366
- * ```
4367
- *
4368
- * @default 'AI'
4369
- */
4370
- assistantName?: string;
4371
- /**
4372
- * This is the name of the user in the transcript. Defaults to 'User'.
4373
- *
4374
- * Usage:
4375
- * - If you want to change the name of the user in the transcript, set this. Example, here is what the transcript would look like with `userName` set to 'Seller':
4376
- * ```
4377
- * Seller: Hello, how are you?
4378
- * AI: I'm fine.
4379
- * Seller: Do you want to buy a car?
4380
- * AI: No.
4381
- * ```
4382
- *
4383
- * @default 'User'
4384
- */
4385
- userName?: string;
4386
- }
4387
- export interface ArtifactPlan {
4388
- /**
4389
- * This determines whether assistant's calls are recorded. Defaults to true.
4390
- *
4391
- * Usage:
4392
- * - If you don't want to record the calls, set this to false.
4393
- * - If you want to record the calls when `assistant.hipaaEnabled` (deprecated) or `assistant.compliancePlan.hipaaEnabled` explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.
4394
- *
4395
- * You can find the recording at `call.artifact.recordingUrl` and `call.artifact.stereoRecordingUrl` after the call is ended.
4396
- *
4397
- * @default true
4398
- * @example true
4399
- */
4400
- recordingEnabled?: boolean;
4401
- /**
4402
- * This determines the format of the recording. Defaults to `wav;l16`.
4403
- *
4404
- * @default 'wav;l16'
4405
- */
4406
- recordingFormat?: 'wav;l16' | 'mp3';
4407
- /**
4408
- * This determines whether the video is recorded during the call. Defaults to false. Only relevant for `webCall` type.
4409
- *
4410
- * You can find the video recording at `call.artifact.videoRecordingUrl` after the call is ended.
4411
- *
4412
- * @default false
4413
- * @example false
4414
- */
4415
- videoRecordingEnabled?: boolean;
4416
- /**
4417
- * 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`.
4418
- *
4419
- * You can find the packet capture at `call.artifact.pcapUrl` after the call is ended.
4420
- *
4421
- * @default true
4422
- * @example true
4423
- */
4424
- pcapEnabled?: boolean;
4425
- /**
4426
- * This is the path where the SIP packet capture will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
4427
- *
4428
- * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
4429
- *
4430
- * Usage:
4431
- * - If you want to upload the packet capture to a specific path, set this to the path. Example: `/my-assistant-captures`.
4432
- * - If you want to upload the packet capture to the root of the bucket, set this to `/`.
4433
- *
4434
- * @default '/'
4435
- * @example "/pcaps"
4436
- */
4437
- pcapS3PathPrefix?: string;
4438
- /** This is the plan for `call.artifact.transcript`. To disable, set `transcriptPlan.enabled` to false. */
4439
- transcriptPlan?: TranscriptPlan;
4440
- /**
4441
- * This is the path where the recording will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
4442
- *
4443
- * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
4444
- *
4445
- * Usage:
4446
- * - If you want to upload the recording to a specific path, set this to the path. Example: `/my-assistant-recordings`.
4447
- * - If you want to upload the recording to the root of the bucket, set this to `/`.
4448
- *
4449
- * @default '/'
4450
- */
4451
- recordingPath?: string;
4452
- }
4453
5017
  export interface MessagePlan {
4454
5018
  /**
4455
5019
  * This are the messages that the assistant will speak when the user hasn't responded for `idleTimeoutSeconds`. Each time the timeout is triggered, a random message will be chosen from this array.
@@ -4469,6 +5033,12 @@ export interface MessagePlan {
4469
5033
  * @max 10
4470
5034
  */
4471
5035
  idleMessageMaxSpokenCount?: number;
5036
+ /**
5037
+ * This determines whether the idle message count is reset whenever the user speaks.
5038
+ *
5039
+ * @default false
5040
+ */
5041
+ idleMessageResetCountOnUserSpeechEnabled?: boolean;
4472
5042
  /**
4473
5043
  * This is the timeout in seconds before a message from `idleMessages` is spoken. The clock starts when the assistant finishes speaking and remains active until the user speaks.
4474
5044
  *
@@ -4626,13 +5196,13 @@ export interface LivekitSmartEndpointingPlan {
4626
5196
  /**
4627
5197
  * This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.
4628
5198
  *
4629
- * This is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to seconds that the user should wait ([0, \infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).
5199
+ * This is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to milliseconds that the bot should wait before speaking ([0, \infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).
4630
5200
  *
4631
5201
  * A probability of zero represents very high confidence that the caller has stopped speaking, and would like the bot to speak to them. A probability of one represents very high confidence that the caller is still speaking.
4632
5202
  *
4633
5203
  * Under the hood, this is parsed into a mathjs expression. Whatever you use to write your expression needs to be valid with respect to mathjs
4634
5204
  *
4635
- * @default "200 + 8000 * x"
5205
+ * @default "70 + 4000 * x"
4636
5206
  */
4637
5207
  waitFunction?: string;
4638
5208
  }
@@ -4903,10 +5473,10 @@ export interface CreateAssistantDTO {
4903
5473
  */
4904
5474
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
4905
5475
  /**
4906
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
4907
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
5476
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
5477
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
4908
5478
  */
4909
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
5479
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'tool.completed' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
4910
5480
  /**
4911
5481
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
4912
5482
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -4962,7 +5532,101 @@ export interface CreateAssistantDTO {
4962
5532
  */
4963
5533
  observabilityPlan?: LangfuseObservabilityPlan;
4964
5534
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
4965
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
5535
+ credentials?: (({
5536
+ provider: '11labs';
5537
+ } & CreateElevenLabsCredentialDTO) | ({
5538
+ provider: 'anthropic';
5539
+ } & CreateAnthropicCredentialDTO) | ({
5540
+ provider: 'anyscale';
5541
+ } & CreateAnyscaleCredentialDTO) | ({
5542
+ provider: 'assembly-ai';
5543
+ } & CreateAssemblyAICredentialDTO) | ({
5544
+ provider: 'azure-openai';
5545
+ } & CreateAzureOpenAICredentialDTO) | ({
5546
+ provider: 'azure';
5547
+ } & CreateAzureCredentialDTO) | ({
5548
+ provider: 'byo-sip-trunk';
5549
+ } & CreateByoSipTrunkCredentialDTO) | ({
5550
+ provider: 'cartesia';
5551
+ } & CreateCartesiaCredentialDTO) | ({
5552
+ provider: 'cerebras';
5553
+ } & CreateCerebrasCredentialDTO) | ({
5554
+ provider: 'cloudflare';
5555
+ } & CreateCloudflareCredentialDTO) | ({
5556
+ provider: 'custom-llm';
5557
+ } & CreateCustomLLMCredentialDTO) | ({
5558
+ provider: 'deepgram';
5559
+ } & CreateDeepgramCredentialDTO) | ({
5560
+ provider: 'deepinfra';
5561
+ } & CreateDeepInfraCredentialDTO) | ({
5562
+ provider: 'deep-seek';
5563
+ } & CreateDeepSeekCredentialDTO) | ({
5564
+ provider: 'gcp';
5565
+ } & CreateGcpCredentialDTO) | ({
5566
+ provider: 'gladia';
5567
+ } & CreateGladiaCredentialDTO) | ({
5568
+ provider: 'gohighlevel';
5569
+ } & CreateGoHighLevelCredentialDTO) | ({
5570
+ provider: 'google';
5571
+ } & CreateGoogleCredentialDTO) | ({
5572
+ provider: 'groq';
5573
+ } & CreateGroqCredentialDTO) | ({
5574
+ provider: 'inflection-ai';
5575
+ } & CreateInflectionAICredentialDTO) | ({
5576
+ provider: 'langfuse';
5577
+ } & CreateLangfuseCredentialDTO) | ({
5578
+ provider: 'lmnt';
5579
+ } & CreateLmntCredentialDTO) | ({
5580
+ provider: 'make';
5581
+ } & CreateMakeCredentialDTO) | ({
5582
+ provider: 'openai';
5583
+ } & CreateOpenAICredentialDTO) | ({
5584
+ provider: 'openrouter';
5585
+ } & CreateOpenRouterCredentialDTO) | ({
5586
+ provider: 'perplexity-ai';
5587
+ } & CreatePerplexityAICredentialDTO) | ({
5588
+ provider: 'playht';
5589
+ } & CreatePlayHTCredentialDTO) | ({
5590
+ provider: 'rime-ai';
5591
+ } & CreateRimeAICredentialDTO) | ({
5592
+ provider: 'runpod';
5593
+ } & CreateRunpodCredentialDTO) | ({
5594
+ provider: 's3';
5595
+ } & CreateS3CredentialDTO) | ({
5596
+ provider: 'supabase';
5597
+ } & CreateSupabaseCredentialDTO) | ({
5598
+ provider: 'smallest-ai';
5599
+ } & CreateSmallestAICredentialDTO) | ({
5600
+ provider: 'tavus';
5601
+ } & CreateTavusCredentialDTO) | ({
5602
+ provider: 'together-ai';
5603
+ } & CreateTogetherAICredentialDTO) | ({
5604
+ provider: 'twilio';
5605
+ } & CreateTwilioCredentialDTO) | ({
5606
+ provider: 'vonage';
5607
+ } & CreateVonageCredentialDTO) | ({
5608
+ provider: 'webhook';
5609
+ } & CreateWebhookCredentialDTO) | ({
5610
+ provider: 'xai';
5611
+ } & CreateXAiCredentialDTO) | ({
5612
+ provider: 'neuphonic';
5613
+ } & CreateNeuphonicCredentialDTO) | ({
5614
+ provider: 'hume';
5615
+ } & CreateHumeCredentialDTO) | ({
5616
+ provider: 'mistral';
5617
+ } & CreateMistralCredentialDTO) | ({
5618
+ provider: 'speechmatics';
5619
+ } & CreateSpeechmaticsCredentialDTO) | ({
5620
+ provider: 'trieve';
5621
+ } & CreateTrieveCredentialDTO) | ({
5622
+ provider: 'google.calendar.oauth2-client';
5623
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
5624
+ provider: 'google.calendar.oauth2-authorization';
5625
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
5626
+ provider: 'google.sheets.oauth2-authorization';
5627
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
5628
+ provider: 'slack.oauth2-authorization';
5629
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
4966
5630
  /**
4967
5631
  * This is the name of the assistant.
4968
5632
  *
@@ -5087,10 +5751,10 @@ export interface AssistantOverrides {
5087
5751
  */
5088
5752
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
5089
5753
  /**
5090
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
5091
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
5754
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
5755
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
5092
5756
  */
5093
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
5757
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'tool.completed' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
5094
5758
  /**
5095
5759
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
5096
5760
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -5146,7 +5810,101 @@ export interface AssistantOverrides {
5146
5810
  */
5147
5811
  observabilityPlan?: LangfuseObservabilityPlan;
5148
5812
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
5149
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
5813
+ credentials?: (({
5814
+ provider: '11labs';
5815
+ } & CreateElevenLabsCredentialDTO) | ({
5816
+ provider: 'anthropic';
5817
+ } & CreateAnthropicCredentialDTO) | ({
5818
+ provider: 'anyscale';
5819
+ } & CreateAnyscaleCredentialDTO) | ({
5820
+ provider: 'assembly-ai';
5821
+ } & CreateAssemblyAICredentialDTO) | ({
5822
+ provider: 'azure-openai';
5823
+ } & CreateAzureOpenAICredentialDTO) | ({
5824
+ provider: 'azure';
5825
+ } & CreateAzureCredentialDTO) | ({
5826
+ provider: 'byo-sip-trunk';
5827
+ } & CreateByoSipTrunkCredentialDTO) | ({
5828
+ provider: 'cartesia';
5829
+ } & CreateCartesiaCredentialDTO) | ({
5830
+ provider: 'cerebras';
5831
+ } & CreateCerebrasCredentialDTO) | ({
5832
+ provider: 'cloudflare';
5833
+ } & CreateCloudflareCredentialDTO) | ({
5834
+ provider: 'custom-llm';
5835
+ } & CreateCustomLLMCredentialDTO) | ({
5836
+ provider: 'deepgram';
5837
+ } & CreateDeepgramCredentialDTO) | ({
5838
+ provider: 'deepinfra';
5839
+ } & CreateDeepInfraCredentialDTO) | ({
5840
+ provider: 'deep-seek';
5841
+ } & CreateDeepSeekCredentialDTO) | ({
5842
+ provider: 'gcp';
5843
+ } & CreateGcpCredentialDTO) | ({
5844
+ provider: 'gladia';
5845
+ } & CreateGladiaCredentialDTO) | ({
5846
+ provider: 'gohighlevel';
5847
+ } & CreateGoHighLevelCredentialDTO) | ({
5848
+ provider: 'google';
5849
+ } & CreateGoogleCredentialDTO) | ({
5850
+ provider: 'groq';
5851
+ } & CreateGroqCredentialDTO) | ({
5852
+ provider: 'inflection-ai';
5853
+ } & CreateInflectionAICredentialDTO) | ({
5854
+ provider: 'langfuse';
5855
+ } & CreateLangfuseCredentialDTO) | ({
5856
+ provider: 'lmnt';
5857
+ } & CreateLmntCredentialDTO) | ({
5858
+ provider: 'make';
5859
+ } & CreateMakeCredentialDTO) | ({
5860
+ provider: 'openai';
5861
+ } & CreateOpenAICredentialDTO) | ({
5862
+ provider: 'openrouter';
5863
+ } & CreateOpenRouterCredentialDTO) | ({
5864
+ provider: 'perplexity-ai';
5865
+ } & CreatePerplexityAICredentialDTO) | ({
5866
+ provider: 'playht';
5867
+ } & CreatePlayHTCredentialDTO) | ({
5868
+ provider: 'rime-ai';
5869
+ } & CreateRimeAICredentialDTO) | ({
5870
+ provider: 'runpod';
5871
+ } & CreateRunpodCredentialDTO) | ({
5872
+ provider: 's3';
5873
+ } & CreateS3CredentialDTO) | ({
5874
+ provider: 'supabase';
5875
+ } & CreateSupabaseCredentialDTO) | ({
5876
+ provider: 'smallest-ai';
5877
+ } & CreateSmallestAICredentialDTO) | ({
5878
+ provider: 'tavus';
5879
+ } & CreateTavusCredentialDTO) | ({
5880
+ provider: 'together-ai';
5881
+ } & CreateTogetherAICredentialDTO) | ({
5882
+ provider: 'twilio';
5883
+ } & CreateTwilioCredentialDTO) | ({
5884
+ provider: 'vonage';
5885
+ } & CreateVonageCredentialDTO) | ({
5886
+ provider: 'webhook';
5887
+ } & CreateWebhookCredentialDTO) | ({
5888
+ provider: 'xai';
5889
+ } & CreateXAiCredentialDTO) | ({
5890
+ provider: 'neuphonic';
5891
+ } & CreateNeuphonicCredentialDTO) | ({
5892
+ provider: 'hume';
5893
+ } & CreateHumeCredentialDTO) | ({
5894
+ provider: 'mistral';
5895
+ } & CreateMistralCredentialDTO) | ({
5896
+ provider: 'speechmatics';
5897
+ } & CreateSpeechmaticsCredentialDTO) | ({
5898
+ provider: 'trieve';
5899
+ } & CreateTrieveCredentialDTO) | ({
5900
+ provider: 'google.calendar.oauth2-client';
5901
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
5902
+ provider: 'google.calendar.oauth2-authorization';
5903
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
5904
+ provider: 'google.sheets.oauth2-authorization';
5905
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
5906
+ provider: 'slack.oauth2-authorization';
5907
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
5150
5908
  /**
5151
5909
  * These are values that will be used to replace the template variables in the assistant messages and other text-based fields.
5152
5910
  * This uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html
@@ -5273,6 +6031,15 @@ export interface CreateSquadDTO {
5273
6031
  */
5274
6032
  membersOverrides?: AssistantOverrides;
5275
6033
  }
6034
+ export interface PhoneNumberHookCallRinging {
6035
+ /**
6036
+ * This is the event to trigger the hook on
6037
+ * @maxLength 1000
6038
+ */
6039
+ on: 'call.ringing';
6040
+ /** This is the set of actions to perform when the hook triggers */
6041
+ do: any[];
6042
+ }
5276
6043
  export interface ImportTwilioPhoneNumberDTO {
5277
6044
  /**
5278
6045
  * This is the fallback destination an inbound call will be transferred to if:
@@ -5283,6 +6050,8 @@ export interface ImportTwilioPhoneNumberDTO {
5283
6050
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
5284
6051
  */
5285
6052
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
6053
+ /** This is the hooks that will be used for incoming calls to this phone number. */
6054
+ hooks?: PhoneNumberHookCallRinging[];
5286
6055
  /**
5287
6056
  * These are the digits of the phone number you own on your Twilio.
5288
6057
  * @deprecated
@@ -5340,6 +6109,11 @@ export interface CreateCustomerDTO {
5340
6109
  * @example null
5341
6110
  */
5342
6111
  extension?: string;
6112
+ /**
6113
+ * These are the overrides for the assistant's settings and template variables specific to this customer.
6114
+ * This allows customization of the assistant's behavior for individual customers in batch calls.
6115
+ */
6116
+ assistantOverrides?: AssistantOverrides;
5343
6117
  /**
5344
6118
  * This is the number of the customer.
5345
6119
  * @minLength 3
@@ -5356,136 +6130,21 @@ export interface CreateCustomerDTO {
5356
6130
  */
5357
6131
  name?: string;
5358
6132
  }
5359
- export interface CreateCallDTO {
5360
- /**
5361
- * This is the name of the call. This is just for your own reference.
5362
- * @maxLength 40
5363
- */
5364
- name?: string;
5365
- /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
5366
- assistantId?: string;
5367
- /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
5368
- assistant?: CreateAssistantDTO;
5369
- /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
5370
- assistantOverrides?: AssistantOverrides;
5371
- /** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
5372
- squadId?: string;
5373
- /** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
5374
- squad?: CreateSquadDTO;
6133
+ export interface SchedulePlan {
5375
6134
  /**
5376
- * This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
5377
- *
5378
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6135
+ * This is the ISO 8601 date-time string of the earliest time the call can be scheduled.
6136
+ * @format date-time
5379
6137
  */
5380
- phoneNumberId?: string;
6138
+ earliestAt: string;
5381
6139
  /**
5382
- * This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
5383
- *
5384
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6140
+ * This is the ISO 8601 date-time string of the latest time the call can be scheduled.
6141
+ * @format date-time
5385
6142
  */
5386
- phoneNumber?: ImportTwilioPhoneNumberDTO;
5387
- /**
5388
- * This is the customer that will be called. To call a transient customer , use `customer` instead.
5389
- *
5390
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
5391
- */
5392
- customerId?: string;
5393
- /**
5394
- * This is the customer that will be called. To call an existing customer, use `customerId` instead.
5395
- *
5396
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
5397
- */
5398
- customer?: CreateCustomerDTO;
5399
- }
5400
- export interface AnalysisCostBreakdown {
5401
- /** This is the cost to summarize the call. */
5402
- summary?: number;
5403
- /** This is the number of prompt tokens used to summarize the call. */
5404
- summaryPromptTokens?: number;
5405
- /** This is the number of completion tokens used to summarize the call. */
5406
- summaryCompletionTokens?: number;
5407
- /** This is the cost to extract structured data from the call. */
5408
- structuredData?: number;
5409
- /** This is the number of prompt tokens used to extract structured data from the call. */
5410
- structuredDataPromptTokens?: number;
5411
- /** This is the number of completion tokens used to extract structured data from the call. */
5412
- structuredDataCompletionTokens?: number;
5413
- /** This is the cost to evaluate if the call was successful. */
5414
- successEvaluation?: number;
5415
- /** This is the number of prompt tokens used to evaluate if the call was successful. */
5416
- successEvaluationPromptTokens?: number;
5417
- /** This is the number of completion tokens used to evaluate if the call was successful. */
5418
- successEvaluationCompletionTokens?: number;
5419
- }
5420
- export interface CostBreakdown {
5421
- /** This is the cost of the transport provider, like Twilio or Vonage. */
5422
- transport?: number;
5423
- /** This is the cost of the speech-to-text service. */
5424
- stt?: number;
5425
- /** This is the cost of the language model. */
5426
- llm?: number;
5427
- /** This is the cost of the text-to-speech service. */
5428
- tts?: number;
5429
- /** This is the cost of Vapi. */
5430
- vapi?: number;
5431
- /** This is the total cost of the call. */
5432
- total?: number;
5433
- /** This is the LLM prompt tokens used for the call. */
5434
- llmPromptTokens?: number;
5435
- /** This is the LLM completion tokens used for the call. */
5436
- llmCompletionTokens?: number;
5437
- /** This is the TTS characters used for the call. */
5438
- ttsCharacters?: number;
5439
- /** This is the cost of the analysis. */
5440
- analysisCostBreakdown?: AnalysisCostBreakdown;
5441
- }
5442
- export interface Analysis {
5443
- /** This is the summary of the call. Customize by setting `assistant.analysisPlan.summaryPrompt`. */
5444
- summary?: string;
5445
- /** This is the structured data extracted from the call. Customize by setting `assistant.analysisPlan.structuredDataPrompt` and/or `assistant.analysisPlan.structuredDataSchema`. */
5446
- structuredData?: object;
5447
- /** This is the structured data catalog of the call. Customize by setting `assistant.analysisPlan.structuredDataMultiPlan`. */
5448
- structuredDataMulti?: object[];
5449
- /** This is the evaluation of the call. Customize by setting `assistant.analysisPlan.successEvaluationPrompt` and/or `assistant.analysisPlan.successEvaluationRubric`. */
5450
- successEvaluation?: string;
5451
- }
5452
- export interface Monitor {
5453
- /** This is the URL where the assistant's calls can be listened to in real-time. To enable, set `assistant.monitorPlan.listenEnabled` to `true`. */
5454
- listenUrl?: string;
5455
- /** This is the URL where the assistant's calls can be controlled in real-time. To enable, set `assistant.monitorPlan.controlEnabled` to `true`. */
5456
- controlUrl?: string;
5457
- }
5458
- export interface Artifact {
5459
- /** These are the messages that were spoken during the call. */
5460
- messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
5461
- /** These are the messages that were spoken during the call, formatted for OpenAI. */
5462
- messagesOpenAIFormatted?: OpenAIMessage[];
5463
- /** This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
5464
- recordingUrl?: string;
5465
- /** This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
5466
- stereoRecordingUrl?: string;
5467
- /** This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. */
5468
- videoRecordingUrl?: string;
5469
- /** This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps. */
5470
- videoRecordingStartDelaySeconds?: number;
5471
- /** This is the transcript of the call. This is derived from `artifact.messages` but provided for convenience. */
5472
- transcript?: string;
5473
- /** This is the packet capture url for the call. This is only available for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`. */
5474
- pcapUrl?: string;
5475
- }
5476
- export interface Transport {
5477
- /** This is the provider used for the call. */
5478
- provider?: 'twilio' | 'vonage' | 'vapi' | 'daily' | 'telnyx';
5479
- /**
5480
- * This is determines whether the assistant will have video enabled.
5481
- *
5482
- * Only relevant for `webCall` type.
5483
- */
5484
- assistantVideoEnabled?: boolean;
6143
+ latestAt?: string;
5485
6144
  }
5486
6145
  export interface Call {
5487
6146
  /** This is the type of call. */
5488
- type?: 'inboundPhoneCall' | 'outboundPhoneCall' | 'webCall';
6147
+ type?: 'inboundPhoneCall' | 'outboundPhoneCall' | 'webCall' | 'vapi.websocketCall';
5489
6148
  /** These are the costs of individual components of the call in USD. */
5490
6149
  costs?: (TransportCost | TranscriberCost | ModelCost | VoiceCost | VapiCost | VoicemailDetectionCost | AnalysisCost)[];
5491
6150
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
@@ -5504,7 +6163,7 @@ export interface Call {
5504
6163
  /** This is the status of the call. */
5505
6164
  status?: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
5506
6165
  /** This is the explanation for how the call ended. */
5507
- endedReason?: 'assistant-not-valid' | 'assistant-not-provided' | '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' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'assistant-said-message-with-end-call-enabled' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'db-error' | 'assistant-not-found' | 'license-check-failed' | '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-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-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-no-available-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'vapifault-phone-call-worker-setup-socket-error' | 'vapifault-phone-call-worker-worker-setup-socket-timeout' | 'vapifault-phone-call-worker-could-not-find-call' | 'vapifault-transport-never-connected' | 'vapifault-web-call-worker-setup-failed' | 'vapifault-transport-connected-but-call-not-active' | 'vapifault-call-started-but-connection-to-transport-missing' | 'pipeline-error-openai-llm-failed' | 'pipeline-error-azure-openai-llm-failed' | 'pipeline-error-groq-llm-failed' | 'pipeline-error-google-llm-failed' | 'pipeline-error-xai-llm-failed' | 'pipeline-error-mistral-llm-failed' | 'pipeline-error-inflection-ai-llm-failed' | 'pipeline-error-cerebras-llm-failed' | 'pipeline-error-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-500-server-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-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-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-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-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-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-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-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-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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-500-server-error' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | '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' | 'pipeline-error-tavus-video-failed' | 'pipeline-error-custom-transcriber-failed' | 'pipeline-error-11labs-transcriber-failed' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
6166
+ endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-providerfault-transport-never-connected' | 'call.in-progress.error-vapifault-worker-not-available' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'call.forwarding.operator-busy' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
5508
6167
  /** This is the destination where the call ended up being transferred to. If the call was not transferred, this will be empty. */
5509
6168
  destination?: TransferDestinationNumber | TransferDestinationSip;
5510
6169
  /** This is the unique identifier for the call. */
@@ -5543,8 +6202,6 @@ export interface Call {
5543
6202
  monitor?: Monitor;
5544
6203
  /** These are the artifacts created from the call. Configure in `assistant.artifactPlan`. */
5545
6204
  artifact?: Artifact;
5546
- /** This is the transport used for the call. */
5547
- transport?: Transport;
5548
6205
  /**
5549
6206
  * The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage. callControlId in Telnyx.
5550
6207
  *
@@ -5590,6 +6247,71 @@ export interface Call {
5590
6247
  * @maxLength 40
5591
6248
  */
5592
6249
  name?: string;
6250
+ /** This is the schedule plan of the call. */
6251
+ schedulePlan?: SchedulePlan;
6252
+ /** This is the transport of the call. */
6253
+ transport?: object;
6254
+ }
6255
+ export interface CallBatchError {
6256
+ customer: CreateCustomerDTO;
6257
+ error: string;
6258
+ }
6259
+ export interface CallBatchResponse {
6260
+ /** This is the list of calls that were created. */
6261
+ results: Call[];
6262
+ /** This is the list of calls that failed to be created. */
6263
+ errors: CallBatchError[];
6264
+ }
6265
+ export interface CreateCallDTO {
6266
+ /**
6267
+ * This is used to issue batch calls to multiple customers.
6268
+ *
6269
+ * Only relevant for `outboundPhoneCall`. To call a single customer, use `customer` instead.
6270
+ */
6271
+ customers?: CreateCustomerDTO[];
6272
+ /**
6273
+ * This is the name of the call. This is just for your own reference.
6274
+ * @maxLength 40
6275
+ */
6276
+ name?: string;
6277
+ /** This is the schedule plan of the call. */
6278
+ schedulePlan?: SchedulePlan;
6279
+ /** This is the transport of the call. */
6280
+ transport?: object;
6281
+ /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
6282
+ assistantId?: string;
6283
+ /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
6284
+ assistant?: CreateAssistantDTO;
6285
+ /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
6286
+ assistantOverrides?: AssistantOverrides;
6287
+ /** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
6288
+ squadId?: string;
6289
+ /** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
6290
+ squad?: CreateSquadDTO;
6291
+ /**
6292
+ * This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
6293
+ *
6294
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6295
+ */
6296
+ phoneNumberId?: string;
6297
+ /**
6298
+ * This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
6299
+ *
6300
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6301
+ */
6302
+ phoneNumber?: ImportTwilioPhoneNumberDTO;
6303
+ /**
6304
+ * This is the customer that will be called. To call a transient customer , use `customer` instead.
6305
+ *
6306
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6307
+ */
6308
+ customerId?: string;
6309
+ /**
6310
+ * This is the customer that will be called. To call an existing customer, use `customerId` instead.
6311
+ *
6312
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6313
+ */
6314
+ customer?: CreateCustomerDTO;
5593
6315
  }
5594
6316
  export interface PaginationMeta {
5595
6317
  itemsPerPage: number;
@@ -5601,11 +6323,21 @@ export interface CallPaginatedResponse {
5601
6323
  metadata: PaginationMeta;
5602
6324
  }
5603
6325
  export interface CreateOutboundCallDTO {
6326
+ /**
6327
+ * This is used to issue batch calls to multiple customers.
6328
+ *
6329
+ * Only relevant for `outboundPhoneCall`. To call a single customer, use `customer` instead.
6330
+ */
6331
+ customers?: CreateCustomerDTO[];
5604
6332
  /**
5605
6333
  * This is the name of the call. This is just for your own reference.
5606
6334
  * @maxLength 40
5607
6335
  */
5608
6336
  name?: string;
6337
+ /** This is the schedule plan of the call. */
6338
+ schedulePlan?: SchedulePlan;
6339
+ /** This is the transport of the call. */
6340
+ transport?: object;
5609
6341
  /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
5610
6342
  assistantId?: string;
5611
6343
  /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
@@ -5770,6 +6502,8 @@ export interface Transfer {
5770
6502
  }
5771
6503
  export interface CreateWorkflowDTO {
5772
6504
  nodes: (Say | Gather | ApiRequest | Hangup | Transfer)[];
6505
+ /** These are the options for the workflow's LLM. */
6506
+ model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
5773
6507
  /** @maxLength 80 */
5774
6508
  name: string;
5775
6509
  edges: Edge[];
@@ -5817,10 +6551,10 @@ export interface Assistant {
5817
6551
  */
5818
6552
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
5819
6553
  /**
5820
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
5821
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
6554
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
6555
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
5822
6556
  */
5823
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
6557
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'tool.completed' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
5824
6558
  /**
5825
6559
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
5826
6560
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -5876,7 +6610,101 @@ export interface Assistant {
5876
6610
  */
5877
6611
  observabilityPlan?: LangfuseObservabilityPlan;
5878
6612
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
5879
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
6613
+ credentials?: (({
6614
+ provider: '11labs';
6615
+ } & CreateElevenLabsCredentialDTO) | ({
6616
+ provider: 'anthropic';
6617
+ } & CreateAnthropicCredentialDTO) | ({
6618
+ provider: 'anyscale';
6619
+ } & CreateAnyscaleCredentialDTO) | ({
6620
+ provider: 'assembly-ai';
6621
+ } & CreateAssemblyAICredentialDTO) | ({
6622
+ provider: 'azure-openai';
6623
+ } & CreateAzureOpenAICredentialDTO) | ({
6624
+ provider: 'azure';
6625
+ } & CreateAzureCredentialDTO) | ({
6626
+ provider: 'byo-sip-trunk';
6627
+ } & CreateByoSipTrunkCredentialDTO) | ({
6628
+ provider: 'cartesia';
6629
+ } & CreateCartesiaCredentialDTO) | ({
6630
+ provider: 'cerebras';
6631
+ } & CreateCerebrasCredentialDTO) | ({
6632
+ provider: 'cloudflare';
6633
+ } & CreateCloudflareCredentialDTO) | ({
6634
+ provider: 'custom-llm';
6635
+ } & CreateCustomLLMCredentialDTO) | ({
6636
+ provider: 'deepgram';
6637
+ } & CreateDeepgramCredentialDTO) | ({
6638
+ provider: 'deepinfra';
6639
+ } & CreateDeepInfraCredentialDTO) | ({
6640
+ provider: 'deep-seek';
6641
+ } & CreateDeepSeekCredentialDTO) | ({
6642
+ provider: 'gcp';
6643
+ } & CreateGcpCredentialDTO) | ({
6644
+ provider: 'gladia';
6645
+ } & CreateGladiaCredentialDTO) | ({
6646
+ provider: 'gohighlevel';
6647
+ } & CreateGoHighLevelCredentialDTO) | ({
6648
+ provider: 'google';
6649
+ } & CreateGoogleCredentialDTO) | ({
6650
+ provider: 'groq';
6651
+ } & CreateGroqCredentialDTO) | ({
6652
+ provider: 'inflection-ai';
6653
+ } & CreateInflectionAICredentialDTO) | ({
6654
+ provider: 'langfuse';
6655
+ } & CreateLangfuseCredentialDTO) | ({
6656
+ provider: 'lmnt';
6657
+ } & CreateLmntCredentialDTO) | ({
6658
+ provider: 'make';
6659
+ } & CreateMakeCredentialDTO) | ({
6660
+ provider: 'openai';
6661
+ } & CreateOpenAICredentialDTO) | ({
6662
+ provider: 'openrouter';
6663
+ } & CreateOpenRouterCredentialDTO) | ({
6664
+ provider: 'perplexity-ai';
6665
+ } & CreatePerplexityAICredentialDTO) | ({
6666
+ provider: 'playht';
6667
+ } & CreatePlayHTCredentialDTO) | ({
6668
+ provider: 'rime-ai';
6669
+ } & CreateRimeAICredentialDTO) | ({
6670
+ provider: 'runpod';
6671
+ } & CreateRunpodCredentialDTO) | ({
6672
+ provider: 's3';
6673
+ } & CreateS3CredentialDTO) | ({
6674
+ provider: 'supabase';
6675
+ } & CreateSupabaseCredentialDTO) | ({
6676
+ provider: 'smallest-ai';
6677
+ } & CreateSmallestAICredentialDTO) | ({
6678
+ provider: 'tavus';
6679
+ } & CreateTavusCredentialDTO) | ({
6680
+ provider: 'together-ai';
6681
+ } & CreateTogetherAICredentialDTO) | ({
6682
+ provider: 'twilio';
6683
+ } & CreateTwilioCredentialDTO) | ({
6684
+ provider: 'vonage';
6685
+ } & CreateVonageCredentialDTO) | ({
6686
+ provider: 'webhook';
6687
+ } & CreateWebhookCredentialDTO) | ({
6688
+ provider: 'xai';
6689
+ } & CreateXAiCredentialDTO) | ({
6690
+ provider: 'neuphonic';
6691
+ } & CreateNeuphonicCredentialDTO) | ({
6692
+ provider: 'hume';
6693
+ } & CreateHumeCredentialDTO) | ({
6694
+ provider: 'mistral';
6695
+ } & CreateMistralCredentialDTO) | ({
6696
+ provider: 'speechmatics';
6697
+ } & CreateSpeechmaticsCredentialDTO) | ({
6698
+ provider: 'trieve';
6699
+ } & CreateTrieveCredentialDTO) | ({
6700
+ provider: 'google.calendar.oauth2-client';
6701
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
6702
+ provider: 'google.calendar.oauth2-authorization';
6703
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
6704
+ provider: 'google.sheets.oauth2-authorization';
6705
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
6706
+ provider: 'slack.oauth2-authorization';
6707
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
5880
6708
  /**
5881
6709
  * This is the name of the assistant.
5882
6710
  *
@@ -6019,10 +6847,10 @@ export interface UpdateAssistantDTO {
6019
6847
  */
6020
6848
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
6021
6849
  /**
6022
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
6023
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
6850
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
6851
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
6024
6852
  */
6025
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
6853
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'tool.completed' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
6026
6854
  /**
6027
6855
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
6028
6856
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -6078,7 +6906,101 @@ export interface UpdateAssistantDTO {
6078
6906
  */
6079
6907
  observabilityPlan?: LangfuseObservabilityPlan;
6080
6908
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
6081
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
6909
+ credentials?: (({
6910
+ provider: '11labs';
6911
+ } & CreateElevenLabsCredentialDTO) | ({
6912
+ provider: 'anthropic';
6913
+ } & CreateAnthropicCredentialDTO) | ({
6914
+ provider: 'anyscale';
6915
+ } & CreateAnyscaleCredentialDTO) | ({
6916
+ provider: 'assembly-ai';
6917
+ } & CreateAssemblyAICredentialDTO) | ({
6918
+ provider: 'azure-openai';
6919
+ } & CreateAzureOpenAICredentialDTO) | ({
6920
+ provider: 'azure';
6921
+ } & CreateAzureCredentialDTO) | ({
6922
+ provider: 'byo-sip-trunk';
6923
+ } & CreateByoSipTrunkCredentialDTO) | ({
6924
+ provider: 'cartesia';
6925
+ } & CreateCartesiaCredentialDTO) | ({
6926
+ provider: 'cerebras';
6927
+ } & CreateCerebrasCredentialDTO) | ({
6928
+ provider: 'cloudflare';
6929
+ } & CreateCloudflareCredentialDTO) | ({
6930
+ provider: 'custom-llm';
6931
+ } & CreateCustomLLMCredentialDTO) | ({
6932
+ provider: 'deepgram';
6933
+ } & CreateDeepgramCredentialDTO) | ({
6934
+ provider: 'deepinfra';
6935
+ } & CreateDeepInfraCredentialDTO) | ({
6936
+ provider: 'deep-seek';
6937
+ } & CreateDeepSeekCredentialDTO) | ({
6938
+ provider: 'gcp';
6939
+ } & CreateGcpCredentialDTO) | ({
6940
+ provider: 'gladia';
6941
+ } & CreateGladiaCredentialDTO) | ({
6942
+ provider: 'gohighlevel';
6943
+ } & CreateGoHighLevelCredentialDTO) | ({
6944
+ provider: 'google';
6945
+ } & CreateGoogleCredentialDTO) | ({
6946
+ provider: 'groq';
6947
+ } & CreateGroqCredentialDTO) | ({
6948
+ provider: 'inflection-ai';
6949
+ } & CreateInflectionAICredentialDTO) | ({
6950
+ provider: 'langfuse';
6951
+ } & CreateLangfuseCredentialDTO) | ({
6952
+ provider: 'lmnt';
6953
+ } & CreateLmntCredentialDTO) | ({
6954
+ provider: 'make';
6955
+ } & CreateMakeCredentialDTO) | ({
6956
+ provider: 'openai';
6957
+ } & CreateOpenAICredentialDTO) | ({
6958
+ provider: 'openrouter';
6959
+ } & CreateOpenRouterCredentialDTO) | ({
6960
+ provider: 'perplexity-ai';
6961
+ } & CreatePerplexityAICredentialDTO) | ({
6962
+ provider: 'playht';
6963
+ } & CreatePlayHTCredentialDTO) | ({
6964
+ provider: 'rime-ai';
6965
+ } & CreateRimeAICredentialDTO) | ({
6966
+ provider: 'runpod';
6967
+ } & CreateRunpodCredentialDTO) | ({
6968
+ provider: 's3';
6969
+ } & CreateS3CredentialDTO) | ({
6970
+ provider: 'supabase';
6971
+ } & CreateSupabaseCredentialDTO) | ({
6972
+ provider: 'smallest-ai';
6973
+ } & CreateSmallestAICredentialDTO) | ({
6974
+ provider: 'tavus';
6975
+ } & CreateTavusCredentialDTO) | ({
6976
+ provider: 'together-ai';
6977
+ } & CreateTogetherAICredentialDTO) | ({
6978
+ provider: 'twilio';
6979
+ } & CreateTwilioCredentialDTO) | ({
6980
+ provider: 'vonage';
6981
+ } & CreateVonageCredentialDTO) | ({
6982
+ provider: 'webhook';
6983
+ } & CreateWebhookCredentialDTO) | ({
6984
+ provider: 'xai';
6985
+ } & CreateXAiCredentialDTO) | ({
6986
+ provider: 'neuphonic';
6987
+ } & CreateNeuphonicCredentialDTO) | ({
6988
+ provider: 'hume';
6989
+ } & CreateHumeCredentialDTO) | ({
6990
+ provider: 'mistral';
6991
+ } & CreateMistralCredentialDTO) | ({
6992
+ provider: 'speechmatics';
6993
+ } & CreateSpeechmaticsCredentialDTO) | ({
6994
+ provider: 'trieve';
6995
+ } & CreateTrieveCredentialDTO) | ({
6996
+ provider: 'google.calendar.oauth2-client';
6997
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
6998
+ provider: 'google.calendar.oauth2-authorization';
6999
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
7000
+ provider: 'google.sheets.oauth2-authorization';
7001
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
7002
+ provider: 'slack.oauth2-authorization';
7003
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
6082
7004
  /**
6083
7005
  * This is the name of the assistant.
6084
7006
  *
@@ -6175,6 +7097,8 @@ export interface ByoPhoneNumber {
6175
7097
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6176
7098
  */
6177
7099
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7100
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7101
+ hooks?: PhoneNumberHookCallRinging[];
6178
7102
  /** This is to bring your own phone numbers from your own SIP trunks or Carriers. */
6179
7103
  provider: 'byo-phone-number';
6180
7104
  /**
@@ -6256,6 +7180,8 @@ export interface TwilioPhoneNumber {
6256
7180
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6257
7181
  */
6258
7182
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7183
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7184
+ hooks?: PhoneNumberHookCallRinging[];
6259
7185
  /** This is to use numbers bought on Twilio. */
6260
7186
  provider: 'twilio';
6261
7187
  /** This is the unique identifier for the phone number. */
@@ -6318,6 +7244,8 @@ export interface VonagePhoneNumber {
6318
7244
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6319
7245
  */
6320
7246
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7247
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7248
+ hooks?: PhoneNumberHookCallRinging[];
6321
7249
  /** This is to use numbers bought on Vonage. */
6322
7250
  provider: 'vonage';
6323
7251
  /** This is the unique identifier for the phone number. */
@@ -6394,6 +7322,8 @@ export interface VapiPhoneNumber {
6394
7322
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6395
7323
  */
6396
7324
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7325
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7326
+ hooks?: PhoneNumberHookCallRinging[];
6397
7327
  /** This is to create free SIP phone numbers on Vapi. */
6398
7328
  provider: 'vapi';
6399
7329
  /** This is the unique identifier for the phone number. */
@@ -6470,6 +7400,8 @@ export interface TelnyxPhoneNumber {
6470
7400
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6471
7401
  */
6472
7402
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7403
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7404
+ hooks?: PhoneNumberHookCallRinging[];
6473
7405
  /** This is to use numbers bought on Telnyx. */
6474
7406
  provider: 'telnyx';
6475
7407
  /** This is the unique identifier for the phone number. */
@@ -6530,6 +7462,8 @@ export interface CreateByoPhoneNumberDTO {
6530
7462
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6531
7463
  */
6532
7464
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7465
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7466
+ hooks?: PhoneNumberHookCallRinging[];
6533
7467
  /** This is to bring your own phone numbers from your own SIP trunks or Carriers. */
6534
7468
  provider: 'byo-phone-number';
6535
7469
  /**
@@ -6595,6 +7529,8 @@ export interface CreateTwilioPhoneNumberDTO {
6595
7529
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6596
7530
  */
6597
7531
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7532
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7533
+ hooks?: PhoneNumberHookCallRinging[];
6598
7534
  /** This is to use numbers bought on Twilio. */
6599
7535
  provider: 'twilio';
6600
7536
  /** These are the digits of the phone number you own on your Twilio. */
@@ -6641,6 +7577,8 @@ export interface CreateVonagePhoneNumberDTO {
6641
7577
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6642
7578
  */
6643
7579
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7580
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7581
+ hooks?: PhoneNumberHookCallRinging[];
6644
7582
  /** This is to use numbers bought on Vonage. */
6645
7583
  provider: 'vonage';
6646
7584
  /** These are the digits of the phone number you own on your Vonage. */
@@ -6685,6 +7623,8 @@ export interface CreateVapiPhoneNumberDTO {
6685
7623
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6686
7624
  */
6687
7625
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7626
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7627
+ hooks?: PhoneNumberHookCallRinging[];
6688
7628
  /** This is to create free SIP phone numbers on Vapi. */
6689
7629
  provider: 'vapi';
6690
7630
  /**
@@ -6743,6 +7683,8 @@ export interface CreateTelnyxPhoneNumberDTO {
6743
7683
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6744
7684
  */
6745
7685
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7686
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7687
+ hooks?: PhoneNumberHookCallRinging[];
6746
7688
  /** This is to use numbers bought on Telnyx. */
6747
7689
  provider: 'telnyx';
6748
7690
  /** These are the digits of the phone number you own on your Telnyx. */
@@ -6787,6 +7729,8 @@ export interface UpdateByoPhoneNumberDTO {
6787
7729
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6788
7730
  */
6789
7731
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7732
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7733
+ hooks?: PhoneNumberHookCallRinging[];
6790
7734
  /**
6791
7735
  * This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.
6792
7736
  *
@@ -6850,6 +7794,8 @@ export interface UpdateTwilioPhoneNumberDTO {
6850
7794
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6851
7795
  */
6852
7796
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7797
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7798
+ hooks?: PhoneNumberHookCallRinging[];
6853
7799
  /**
6854
7800
  * This is the name of the phone number. This is just for your own reference.
6855
7801
  * @maxLength 40
@@ -6894,6 +7840,8 @@ export interface UpdateVonagePhoneNumberDTO {
6894
7840
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6895
7841
  */
6896
7842
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7843
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7844
+ hooks?: PhoneNumberHookCallRinging[];
6897
7845
  /**
6898
7846
  * This is the name of the phone number. This is just for your own reference.
6899
7847
  * @maxLength 40
@@ -6936,6 +7884,8 @@ export interface UpdateVapiPhoneNumberDTO {
6936
7884
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6937
7885
  */
6938
7886
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7887
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7888
+ hooks?: PhoneNumberHookCallRinging[];
6939
7889
  /**
6940
7890
  * This is the name of the phone number. This is just for your own reference.
6941
7891
  * @maxLength 40
@@ -6986,6 +7936,8 @@ export interface UpdateTelnyxPhoneNumberDTO {
6986
7936
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6987
7937
  */
6988
7938
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7939
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7940
+ hooks?: PhoneNumberHookCallRinging[];
6989
7941
  /**
6990
7942
  * This is the name of the phone number. This is just for your own reference.
6991
7943
  * @maxLength 40
@@ -7028,6 +7980,8 @@ export interface ImportVonagePhoneNumberDTO {
7028
7980
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
7029
7981
  */
7030
7982
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7983
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7984
+ hooks?: PhoneNumberHookCallRinging[];
7031
7985
  /**
7032
7986
  * These are the digits of the phone number you own on your Vonage.
7033
7987
  * @deprecated
@@ -7609,27 +8563,6 @@ export interface TextEditorTool {
7609
8563
  */
7610
8564
  name: 'str_replace_editor';
7611
8565
  }
7612
- export interface KnowledgeBase {
7613
- /**
7614
- * The name of the knowledge base
7615
- * @example "My Knowledge Base"
7616
- */
7617
- name: string;
7618
- /**
7619
- * The provider of the knowledge base
7620
- * @example "google"
7621
- */
7622
- provider: 'google';
7623
- /**
7624
- * The model to use for the knowledge base
7625
- * @example "gemini-1.5-flash"
7626
- */
7627
- model: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
7628
- /** A description of the knowledge base */
7629
- description: string;
7630
- /** The file IDs associated with this knowledge base */
7631
- fileIds: string[];
7632
- }
7633
8566
  export interface QueryTool {
7634
8567
  /**
7635
8568
  * This determines if the tool is async.
@@ -7785,7 +8718,342 @@ export interface GoogleSheetsRowAppendTool {
7785
8718
  */
7786
8719
  server?: Server;
7787
8720
  }
7788
- export interface CreateOutputToolDTO {
8721
+ export interface GoogleCalendarCheckAvailabilityTool {
8722
+ /**
8723
+ * This determines if the tool is async.
8724
+ *
8725
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
8726
+ *
8727
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
8728
+ *
8729
+ * Defaults to synchronous (`false`).
8730
+ * @example false
8731
+ */
8732
+ async?: boolean;
8733
+ /**
8734
+ * These are the messages that will be spoken to the user as the tool is running.
8735
+ *
8736
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8737
+ */
8738
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8739
+ /** The type of tool. "google.calendar.availability.check" for Google Calendar availability check tool. */
8740
+ type: 'google.calendar.availability.check';
8741
+ /** This is the unique identifier for the tool. */
8742
+ id: string;
8743
+ /** This is the unique identifier for the organization that this tool belongs to. */
8744
+ orgId: string;
8745
+ /**
8746
+ * This is the ISO 8601 date-time string of when the tool was created.
8747
+ * @format date-time
8748
+ */
8749
+ createdAt: string;
8750
+ /**
8751
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8752
+ * @format date-time
8753
+ */
8754
+ updatedAt: string;
8755
+ /**
8756
+ * This is the function definition of the tool.
8757
+ *
8758
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
8759
+ *
8760
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
8761
+ */
8762
+ function?: OpenAIFunction;
8763
+ /**
8764
+ * This is the server that will be hit when this tool is requested by the model.
8765
+ *
8766
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8767
+ *
8768
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8769
+ */
8770
+ server?: Server;
8771
+ }
8772
+ export interface SlackSendMessageTool {
8773
+ /**
8774
+ * This determines if the tool is async.
8775
+ *
8776
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
8777
+ *
8778
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
8779
+ *
8780
+ * Defaults to synchronous (`false`).
8781
+ * @example false
8782
+ */
8783
+ async?: boolean;
8784
+ /**
8785
+ * These are the messages that will be spoken to the user as the tool is running.
8786
+ *
8787
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8788
+ */
8789
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8790
+ /** The type of tool. "slack.message.send" for Slack send message tool. */
8791
+ type: 'slack.message.send';
8792
+ /** This is the unique identifier for the tool. */
8793
+ id: string;
8794
+ /** This is the unique identifier for the organization that this tool belongs to. */
8795
+ orgId: string;
8796
+ /**
8797
+ * This is the ISO 8601 date-time string of when the tool was created.
8798
+ * @format date-time
8799
+ */
8800
+ createdAt: string;
8801
+ /**
8802
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8803
+ * @format date-time
8804
+ */
8805
+ updatedAt: string;
8806
+ /**
8807
+ * This is the function definition of the tool.
8808
+ *
8809
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
8810
+ *
8811
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
8812
+ */
8813
+ function?: OpenAIFunction;
8814
+ /**
8815
+ * This is the server that will be hit when this tool is requested by the model.
8816
+ *
8817
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8818
+ *
8819
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8820
+ */
8821
+ server?: Server;
8822
+ }
8823
+ export interface SmsSendTool {
8824
+ /**
8825
+ * This determines if the tool is async.
8826
+ *
8827
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
8828
+ *
8829
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
8830
+ *
8831
+ * Defaults to synchronous (`false`).
8832
+ * @example false
8833
+ */
8834
+ async?: boolean;
8835
+ /**
8836
+ * These are the messages that will be spoken to the user as the tool is running.
8837
+ *
8838
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8839
+ */
8840
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8841
+ /** The type of tool. "sms" for Twilio SMS sending tool. */
8842
+ type: 'sms';
8843
+ /** This is the unique identifier for the tool. */
8844
+ id: string;
8845
+ /** This is the unique identifier for the organization that this tool belongs to. */
8846
+ orgId: string;
8847
+ /**
8848
+ * This is the ISO 8601 date-time string of when the tool was created.
8849
+ * @format date-time
8850
+ */
8851
+ createdAt: string;
8852
+ /**
8853
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8854
+ * @format date-time
8855
+ */
8856
+ updatedAt: string;
8857
+ /**
8858
+ * This is the function definition of the tool.
8859
+ *
8860
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
8861
+ *
8862
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
8863
+ */
8864
+ function?: OpenAIFunction;
8865
+ /**
8866
+ * This is the server that will be hit when this tool is requested by the model.
8867
+ *
8868
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8869
+ *
8870
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8871
+ */
8872
+ server?: Server;
8873
+ }
8874
+ export interface McpTool {
8875
+ /**
8876
+ * This determines if the tool is async.
8877
+ *
8878
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
8879
+ *
8880
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
8881
+ *
8882
+ * Defaults to synchronous (`false`).
8883
+ * @example false
8884
+ */
8885
+ async?: boolean;
8886
+ /**
8887
+ * These are the messages that will be spoken to the user as the tool is running.
8888
+ *
8889
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8890
+ */
8891
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8892
+ /** The type of tool. "mcp" for MCP tool. */
8893
+ type: 'mcp';
8894
+ /** This is the unique identifier for the tool. */
8895
+ id: string;
8896
+ /** This is the unique identifier for the organization that this tool belongs to. */
8897
+ orgId: string;
8898
+ /**
8899
+ * This is the ISO 8601 date-time string of when the tool was created.
8900
+ * @format date-time
8901
+ */
8902
+ createdAt: string;
8903
+ /**
8904
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8905
+ * @format date-time
8906
+ */
8907
+ updatedAt: string;
8908
+ /**
8909
+ * This is the function definition of the tool.
8910
+ *
8911
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
8912
+ *
8913
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
8914
+ */
8915
+ function?: OpenAIFunction;
8916
+ /**
8917
+ * This is the server that will be hit when this tool is requested by the model.
8918
+ *
8919
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8920
+ *
8921
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8922
+ */
8923
+ server?: Server;
8924
+ }
8925
+ export interface CreateOutputToolDTO {
8926
+ /**
8927
+ * This determines if the tool is async.
8928
+ *
8929
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
8930
+ *
8931
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
8932
+ *
8933
+ * Defaults to synchronous (`false`).
8934
+ * @example false
8935
+ */
8936
+ async?: boolean;
8937
+ /**
8938
+ * These are the messages that will be spoken to the user as the tool is running.
8939
+ *
8940
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8941
+ */
8942
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8943
+ /** The type of tool. "output" for Output tool. */
8944
+ type: 'output';
8945
+ /**
8946
+ * This is the function definition of the tool.
8947
+ *
8948
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
8949
+ *
8950
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
8951
+ */
8952
+ function?: OpenAIFunction;
8953
+ /**
8954
+ * This is the server that will be hit when this tool is requested by the model.
8955
+ *
8956
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8957
+ *
8958
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8959
+ */
8960
+ server?: Server;
8961
+ }
8962
+ export interface CreateBashToolDTO {
8963
+ /**
8964
+ * This determines if the tool is async.
8965
+ *
8966
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
8967
+ *
8968
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
8969
+ *
8970
+ * Defaults to synchronous (`false`).
8971
+ * @example false
8972
+ */
8973
+ async?: boolean;
8974
+ /**
8975
+ * These are the messages that will be spoken to the user as the tool is running.
8976
+ *
8977
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8978
+ */
8979
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8980
+ /** The type of tool. "bash" for Bash tool. */
8981
+ type: 'bash';
8982
+ /** The sub type of tool. */
8983
+ subType: 'bash_20241022';
8984
+ /**
8985
+ * The name of the tool, fixed to 'bash'
8986
+ * @default "bash"
8987
+ */
8988
+ name: 'bash';
8989
+ /**
8990
+ * This is the function definition of the tool.
8991
+ *
8992
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
8993
+ *
8994
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
8995
+ */
8996
+ function?: OpenAIFunction;
8997
+ /**
8998
+ * This is the server that will be hit when this tool is requested by the model.
8999
+ *
9000
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
9001
+ *
9002
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
9003
+ */
9004
+ server?: Server;
9005
+ }
9006
+ export interface CreateComputerToolDTO {
9007
+ /**
9008
+ * This determines if the tool is async.
9009
+ *
9010
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
9011
+ *
9012
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
9013
+ *
9014
+ * Defaults to synchronous (`false`).
9015
+ * @example false
9016
+ */
9017
+ async?: boolean;
9018
+ /**
9019
+ * These are the messages that will be spoken to the user as the tool is running.
9020
+ *
9021
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
9022
+ */
9023
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9024
+ /** The type of tool. "computer" for Computer tool. */
9025
+ type: 'computer';
9026
+ /** The sub type of tool. */
9027
+ subType: 'computer_20241022';
9028
+ /**
9029
+ * The name of the tool, fixed to 'computer'
9030
+ * @default "computer"
9031
+ */
9032
+ name: 'computer';
9033
+ /** The display width in pixels */
9034
+ displayWidthPx: number;
9035
+ /** The display height in pixels */
9036
+ displayHeightPx: number;
9037
+ /** Optional display number */
9038
+ displayNumber?: number;
9039
+ /**
9040
+ * This is the function definition of the tool.
9041
+ *
9042
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
9043
+ *
9044
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
9045
+ */
9046
+ function?: OpenAIFunction;
9047
+ /**
9048
+ * This is the server that will be hit when this tool is requested by the model.
9049
+ *
9050
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
9051
+ *
9052
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
9053
+ */
9054
+ server?: Server;
9055
+ }
9056
+ export interface CreateTextEditorToolDTO {
7789
9057
  /**
7790
9058
  * This determines if the tool is async.
7791
9059
  *
@@ -7803,8 +9071,15 @@ export interface CreateOutputToolDTO {
7803
9071
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7804
9072
  */
7805
9073
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7806
- /** The type of tool. "output" for Output tool. */
7807
- type: 'output';
9074
+ /** The type of tool. "textEditor" for Text Editor tool. */
9075
+ type: 'textEditor';
9076
+ /** The sub type of tool. */
9077
+ subType: 'text_editor_20241022';
9078
+ /**
9079
+ * The name of the tool, fixed to 'str_replace_editor'
9080
+ * @default "str_replace_editor"
9081
+ */
9082
+ name: 'str_replace_editor';
7808
9083
  /**
7809
9084
  * This is the function definition of the tool.
7810
9085
  *
@@ -7822,7 +9097,7 @@ export interface CreateOutputToolDTO {
7822
9097
  */
7823
9098
  server?: Server;
7824
9099
  }
7825
- export interface CreateBashToolDTO {
9100
+ export interface CreateSmsSendToolDTO {
7826
9101
  /**
7827
9102
  * This determines if the tool is async.
7828
9103
  *
@@ -7840,15 +9115,8 @@ export interface CreateBashToolDTO {
7840
9115
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7841
9116
  */
7842
9117
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7843
- /** The type of tool. "bash" for Bash tool. */
7844
- type: 'bash';
7845
- /** The sub type of tool. */
7846
- subType: 'bash_20241022';
7847
- /**
7848
- * The name of the tool, fixed to 'bash'
7849
- * @default "bash"
7850
- */
7851
- name: 'bash';
9118
+ /** The type of tool. "sms" for Twilio SMS sending tool. */
9119
+ type: 'sms';
7852
9120
  /**
7853
9121
  * This is the function definition of the tool.
7854
9122
  *
@@ -7866,7 +9134,7 @@ export interface CreateBashToolDTO {
7866
9134
  */
7867
9135
  server?: Server;
7868
9136
  }
7869
- export interface CreateComputerToolDTO {
9137
+ export interface CreateMcpToolDTO {
7870
9138
  /**
7871
9139
  * This determines if the tool is async.
7872
9140
  *
@@ -7884,21 +9152,8 @@ export interface CreateComputerToolDTO {
7884
9152
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7885
9153
  */
7886
9154
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7887
- /** The type of tool. "computer" for Computer tool. */
7888
- type: 'computer';
7889
- /** The sub type of tool. */
7890
- subType: 'computer_20241022';
7891
- /**
7892
- * The name of the tool, fixed to 'computer'
7893
- * @default "computer"
7894
- */
7895
- name: 'computer';
7896
- /** The display width in pixels */
7897
- displayWidthPx: number;
7898
- /** The display height in pixels */
7899
- displayHeightPx: number;
7900
- /** Optional display number */
7901
- displayNumber?: number;
9155
+ /** The type of tool. "mcp" for MCP tool. */
9156
+ type: 'mcp';
7902
9157
  /**
7903
9158
  * This is the function definition of the tool.
7904
9159
  *
@@ -7916,7 +9171,7 @@ export interface CreateComputerToolDTO {
7916
9171
  */
7917
9172
  server?: Server;
7918
9173
  }
7919
- export interface CreateTextEditorToolDTO {
9174
+ export interface UpdateDtmfToolDTO {
7920
9175
  /**
7921
9176
  * This determines if the tool is async.
7922
9177
  *
@@ -7934,15 +9189,6 @@ export interface CreateTextEditorToolDTO {
7934
9189
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7935
9190
  */
7936
9191
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7937
- /** The type of tool. "textEditor" for Text Editor tool. */
7938
- type: 'textEditor';
7939
- /** The sub type of tool. */
7940
- subType: 'text_editor_20241022';
7941
- /**
7942
- * The name of the tool, fixed to 'str_replace_editor'
7943
- * @default "str_replace_editor"
7944
- */
7945
- name: 'str_replace_editor';
7946
9192
  /**
7947
9193
  * This is the function definition of the tool.
7948
9194
  *
@@ -7960,7 +9206,7 @@ export interface CreateTextEditorToolDTO {
7960
9206
  */
7961
9207
  server?: Server;
7962
9208
  }
7963
- export interface CreateQueryToolDTO {
9209
+ export interface UpdateEndCallToolDTO {
7964
9210
  /**
7965
9211
  * This determines if the tool is async.
7966
9212
  *
@@ -7978,10 +9224,6 @@ export interface CreateQueryToolDTO {
7978
9224
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7979
9225
  */
7980
9226
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7981
- /** The type of tool. "query" for Query tool. */
7982
- type: 'query';
7983
- /** The knowledge bases to query */
7984
- knowledgeBases?: KnowledgeBase[];
7985
9227
  /**
7986
9228
  * This is the function definition of the tool.
7987
9229
  *
@@ -7999,7 +9241,7 @@ export interface CreateQueryToolDTO {
7999
9241
  */
8000
9242
  server?: Server;
8001
9243
  }
8002
- export interface CreateGoogleCalendarCreateEventToolDTO {
9244
+ export interface UpdateFunctionToolDTO {
8003
9245
  /**
8004
9246
  * This determines if the tool is async.
8005
9247
  *
@@ -8017,8 +9259,6 @@ export interface CreateGoogleCalendarCreateEventToolDTO {
8017
9259
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8018
9260
  */
8019
9261
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8020
- /** The type of tool. "google.calendar.event.create" for Google Calendar tool. */
8021
- type: 'google.calendar.event.create';
8022
9262
  /**
8023
9263
  * This is the function definition of the tool.
8024
9264
  *
@@ -8036,7 +9276,7 @@ export interface CreateGoogleCalendarCreateEventToolDTO {
8036
9276
  */
8037
9277
  server?: Server;
8038
9278
  }
8039
- export interface CreateGoogleSheetsRowAppendToolDTO {
9279
+ export interface UpdateGhlToolDTO {
8040
9280
  /**
8041
9281
  * This determines if the tool is async.
8042
9282
  *
@@ -8054,8 +9294,6 @@ export interface CreateGoogleSheetsRowAppendToolDTO {
8054
9294
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8055
9295
  */
8056
9296
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8057
- /** The type of tool. "google.sheets.row.append" for Google Sheets tool. */
8058
- type: 'google.sheets.row.append';
8059
9297
  /**
8060
9298
  * This is the function definition of the tool.
8061
9299
  *
@@ -8072,8 +9310,9 @@ export interface CreateGoogleSheetsRowAppendToolDTO {
8072
9310
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8073
9311
  */
8074
9312
  server?: Server;
9313
+ metadata?: GhlToolMetadata;
8075
9314
  }
8076
- export interface UpdateDtmfToolDTO {
9315
+ export interface UpdateMakeToolDTO {
8077
9316
  /**
8078
9317
  * This determines if the tool is async.
8079
9318
  *
@@ -8107,8 +9346,9 @@ export interface UpdateDtmfToolDTO {
8107
9346
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8108
9347
  */
8109
9348
  server?: Server;
9349
+ metadata?: MakeToolMetadata;
8110
9350
  }
8111
- export interface UpdateEndCallToolDTO {
9351
+ export interface UpdateTransferCallToolDTO {
8112
9352
  /**
8113
9353
  * This determines if the tool is async.
8114
9354
  *
@@ -8126,6 +9366,8 @@ export interface UpdateEndCallToolDTO {
8126
9366
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8127
9367
  */
8128
9368
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9369
+ /** These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called. */
9370
+ destinations?: (TransferDestinationAssistant | TransferDestinationStep | TransferDestinationNumber | TransferDestinationSip)[];
8129
9371
  /**
8130
9372
  * This is the function definition of the tool.
8131
9373
  *
@@ -8143,7 +9385,7 @@ export interface UpdateEndCallToolDTO {
8143
9385
  */
8144
9386
  server?: Server;
8145
9387
  }
8146
- export interface UpdateFunctionToolDTO {
9388
+ export interface UpdateOutputToolDTO {
8147
9389
  /**
8148
9390
  * This determines if the tool is async.
8149
9391
  *
@@ -8178,7 +9420,7 @@ export interface UpdateFunctionToolDTO {
8178
9420
  */
8179
9421
  server?: Server;
8180
9422
  }
8181
- export interface UpdateGhlToolDTO {
9423
+ export interface UpdateBashToolDTO {
8182
9424
  /**
8183
9425
  * This determines if the tool is async.
8184
9426
  *
@@ -8196,6 +9438,8 @@ export interface UpdateGhlToolDTO {
8196
9438
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8197
9439
  */
8198
9440
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9441
+ /** The sub type of tool. */
9442
+ subType?: 'bash_20241022';
8199
9443
  /**
8200
9444
  * This is the function definition of the tool.
8201
9445
  *
@@ -8212,9 +9456,13 @@ export interface UpdateGhlToolDTO {
8212
9456
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8213
9457
  */
8214
9458
  server?: Server;
8215
- metadata?: GhlToolMetadata;
9459
+ /**
9460
+ * The name of the tool, fixed to 'bash'
9461
+ * @default "bash"
9462
+ */
9463
+ name?: 'bash';
8216
9464
  }
8217
- export interface UpdateMakeToolDTO {
9465
+ export interface UpdateComputerToolDTO {
8218
9466
  /**
8219
9467
  * This determines if the tool is async.
8220
9468
  *
@@ -8232,6 +9480,8 @@ export interface UpdateMakeToolDTO {
8232
9480
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8233
9481
  */
8234
9482
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9483
+ /** The sub type of tool. */
9484
+ subType?: 'computer_20241022';
8235
9485
  /**
8236
9486
  * This is the function definition of the tool.
8237
9487
  *
@@ -8248,9 +9498,19 @@ export interface UpdateMakeToolDTO {
8248
9498
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8249
9499
  */
8250
9500
  server?: Server;
8251
- metadata?: MakeToolMetadata;
9501
+ /**
9502
+ * The name of the tool, fixed to 'computer'
9503
+ * @default "computer"
9504
+ */
9505
+ name?: 'computer';
9506
+ /** The display width in pixels */
9507
+ displayWidthPx?: number;
9508
+ /** The display height in pixels */
9509
+ displayHeightPx?: number;
9510
+ /** Optional display number */
9511
+ displayNumber?: number;
8252
9512
  }
8253
- export interface UpdateTransferCallToolDTO {
9513
+ export interface UpdateTextEditorToolDTO {
8254
9514
  /**
8255
9515
  * This determines if the tool is async.
8256
9516
  *
@@ -8268,8 +9528,8 @@ export interface UpdateTransferCallToolDTO {
8268
9528
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8269
9529
  */
8270
9530
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8271
- /** These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called. */
8272
- destinations?: (TransferDestinationAssistant | TransferDestinationStep | TransferDestinationNumber | TransferDestinationSip)[];
9531
+ /** The sub type of tool. */
9532
+ subType?: 'text_editor_20241022';
8273
9533
  /**
8274
9534
  * This is the function definition of the tool.
8275
9535
  *
@@ -8286,8 +9546,13 @@ export interface UpdateTransferCallToolDTO {
8286
9546
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8287
9547
  */
8288
9548
  server?: Server;
9549
+ /**
9550
+ * The name of the tool, fixed to 'str_replace_editor'
9551
+ * @default "str_replace_editor"
9552
+ */
9553
+ name?: 'str_replace_editor';
8289
9554
  }
8290
- export interface UpdateOutputToolDTO {
9555
+ export interface UpdateQueryToolDTO {
8291
9556
  /**
8292
9557
  * This determines if the tool is async.
8293
9558
  *
@@ -8305,6 +9570,8 @@ export interface UpdateOutputToolDTO {
8305
9570
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8306
9571
  */
8307
9572
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9573
+ /** The knowledge bases to query */
9574
+ knowledgeBases?: KnowledgeBase[];
8308
9575
  /**
8309
9576
  * This is the function definition of the tool.
8310
9577
  *
@@ -8322,7 +9589,7 @@ export interface UpdateOutputToolDTO {
8322
9589
  */
8323
9590
  server?: Server;
8324
9591
  }
8325
- export interface UpdateBashToolDTO {
9592
+ export interface UpdateGoogleCalendarCreateEventToolDTO {
8326
9593
  /**
8327
9594
  * This determines if the tool is async.
8328
9595
  *
@@ -8340,8 +9607,6 @@ export interface UpdateBashToolDTO {
8340
9607
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8341
9608
  */
8342
9609
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8343
- /** The sub type of tool. */
8344
- subType?: 'bash_20241022';
8345
9610
  /**
8346
9611
  * This is the function definition of the tool.
8347
9612
  *
@@ -8358,13 +9623,8 @@ export interface UpdateBashToolDTO {
8358
9623
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8359
9624
  */
8360
9625
  server?: Server;
8361
- /**
8362
- * The name of the tool, fixed to 'bash'
8363
- * @default "bash"
8364
- */
8365
- name?: 'bash';
8366
9626
  }
8367
- export interface UpdateComputerToolDTO {
9627
+ export interface UpdateGoogleSheetsRowAppendToolDTO {
8368
9628
  /**
8369
9629
  * This determines if the tool is async.
8370
9630
  *
@@ -8382,8 +9642,6 @@ export interface UpdateComputerToolDTO {
8382
9642
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8383
9643
  */
8384
9644
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8385
- /** The sub type of tool. */
8386
- subType?: 'computer_20241022';
8387
9645
  /**
8388
9646
  * This is the function definition of the tool.
8389
9647
  *
@@ -8400,19 +9658,8 @@ export interface UpdateComputerToolDTO {
8400
9658
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8401
9659
  */
8402
9660
  server?: Server;
8403
- /**
8404
- * The name of the tool, fixed to 'computer'
8405
- * @default "computer"
8406
- */
8407
- name?: 'computer';
8408
- /** The display width in pixels */
8409
- displayWidthPx?: number;
8410
- /** The display height in pixels */
8411
- displayHeightPx?: number;
8412
- /** Optional display number */
8413
- displayNumber?: number;
8414
9661
  }
8415
- export interface UpdateTextEditorToolDTO {
9662
+ export interface UpdateGoogleCalendarCheckAvailabilityToolDTO {
8416
9663
  /**
8417
9664
  * This determines if the tool is async.
8418
9665
  *
@@ -8430,8 +9677,6 @@ export interface UpdateTextEditorToolDTO {
8430
9677
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8431
9678
  */
8432
9679
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8433
- /** The sub type of tool. */
8434
- subType?: 'text_editor_20241022';
8435
9680
  /**
8436
9681
  * This is the function definition of the tool.
8437
9682
  *
@@ -8448,13 +9693,8 @@ export interface UpdateTextEditorToolDTO {
8448
9693
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8449
9694
  */
8450
9695
  server?: Server;
8451
- /**
8452
- * The name of the tool, fixed to 'str_replace_editor'
8453
- * @default "str_replace_editor"
8454
- */
8455
- name?: 'str_replace_editor';
8456
9696
  }
8457
- export interface UpdateQueryToolDTO {
9697
+ export interface UpdateSlackSendMessageToolDTO {
8458
9698
  /**
8459
9699
  * This determines if the tool is async.
8460
9700
  *
@@ -8472,8 +9712,6 @@ export interface UpdateQueryToolDTO {
8472
9712
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8473
9713
  */
8474
9714
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8475
- /** The knowledge bases to query */
8476
- knowledgeBases?: KnowledgeBase[];
8477
9715
  /**
8478
9716
  * This is the function definition of the tool.
8479
9717
  *
@@ -8491,7 +9729,7 @@ export interface UpdateQueryToolDTO {
8491
9729
  */
8492
9730
  server?: Server;
8493
9731
  }
8494
- export interface UpdateGoogleCalendarCreateEventToolDTO {
9732
+ export interface UpdateSmsSendToolDTO {
8495
9733
  /**
8496
9734
  * This determines if the tool is async.
8497
9735
  *
@@ -8526,7 +9764,7 @@ export interface UpdateGoogleCalendarCreateEventToolDTO {
8526
9764
  */
8527
9765
  server?: Server;
8528
9766
  }
8529
- export interface UpdateGoogleSheetsRowAppendToolDTO {
9767
+ export interface UpdateMcpToolDTO {
8530
9768
  /**
8531
9769
  * This determines if the tool is async.
8532
9770
  *
@@ -8798,6 +10036,8 @@ export interface TrieveKnowledgeBaseImport {
8798
10036
  }
8799
10037
  export interface UpdateWorkflowDTO {
8800
10038
  nodes?: (Say | Gather | ApiRequest | Hangup | Transfer)[];
10039
+ /** These are the options for the workflow's LLM. */
10040
+ model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
8801
10041
  /** @maxLength 80 */
8802
10042
  name?: string;
8803
10043
  edges?: Edge[];
@@ -8879,10 +10119,26 @@ export interface TestSuitePhoneNumber {
8879
10119
  number: string;
8880
10120
  }
8881
10121
  export interface TargetPlan {
8882
- /** This is the phoneNumberId that is being tested. */
10122
+ /**
10123
+ * This is the phone number that is being tested.
10124
+ * During the actual test, it'll be called and the assistant attached to it will pick up and be tested.
10125
+ * To test an assistant directly, send assistantId instead.
10126
+ */
8883
10127
  phoneNumberId?: string;
8884
- /** This is the phone number that is being tested. Only use this if you have not imported the phone number to Vapi. */
10128
+ /**
10129
+ * This can be any phone number (even not on Vapi).
10130
+ * During the actual test, it'll be called.
10131
+ * To test a Vapi number, send phoneNumberId. To test an assistant directly, send assistantId instead.
10132
+ */
8885
10133
  phoneNumber?: TestSuitePhoneNumber;
10134
+ /**
10135
+ * This is the assistant being tested.
10136
+ * During the actual test, it'll invoked directly.
10137
+ * To test the assistant over phone number, send phoneNumberId instead.
10138
+ */
10139
+ assistantId?: string;
10140
+ /** This is the assistant overrides applied to assistantId before it is tested. */
10141
+ assistantOverrides?: AssistantOverrides;
8886
10142
  }
8887
10143
  export interface TestSuite {
8888
10144
  /** This is the unique identifier for the test suite. */
@@ -9185,14 +10441,22 @@ export interface TestSuiteRunScorerAI {
9185
10441
  rubric: string;
9186
10442
  }
9187
10443
  export interface TestSuiteRunTestAttemptCall {
9188
- /** This is the artifact associated with the call. */
10444
+ /** This is the artifact of the call. */
9189
10445
  artifact: Artifact;
9190
10446
  }
10447
+ export interface TestSuiteRunTestAttemptMetadata {
10448
+ /** This is the session ID for the test attempt. */
10449
+ sessionId: string;
10450
+ }
9191
10451
  export interface TestSuiteRunTestAttempt {
9192
10452
  /** These are the results of the scorers used to evaluate the test attempt. */
9193
10453
  scorerResults: TestSuiteRunScorerAI[];
9194
10454
  /** This is the call made during the test attempt. */
9195
- call: TestSuiteRunTestAttemptCall;
10455
+ call?: TestSuiteRunTestAttemptCall;
10456
+ /** This is the call ID for the test attempt. */
10457
+ callId?: string;
10458
+ /** This is the metadata for the test attempt. */
10459
+ metadata?: TestSuiteRunTestAttemptMetadata;
9196
10460
  }
9197
10461
  export interface TestSuiteRunTestResult {
9198
10462
  /** This is the test that was run. */
@@ -9655,6 +10919,8 @@ export interface Org {
9655
10919
  stripeSubscriptionStatus?: string;
9656
10920
  /** This is the plan for the org. */
9657
10921
  plan?: OrgPlan;
10922
+ /** This is the secret key used for signing JWT tokens for the org. */
10923
+ jwtSecret?: string;
9658
10924
  /**
9659
10925
  * This is the name of the org. This is just for your own reference.
9660
10926
  * @maxLength 40
@@ -9771,6 +11037,10 @@ export interface UpdateUserRoleDTO {
9771
11037
  userId: string;
9772
11038
  role: 'admin' | 'editor' | 'viewer';
9773
11039
  }
11040
+ export interface JwtResponse {
11041
+ accessToken: string;
11042
+ aud: object;
11043
+ }
9774
11044
  export interface TokenRestrictions {
9775
11045
  /** This determines whether the token is enabled or disabled. Default is true, it's enabled. */
9776
11046
  enabled?: boolean;
@@ -11108,6 +12378,56 @@ export interface GoogleCalendarOAuth2AuthorizationCredential {
11108
12378
  */
11109
12379
  name?: string;
11110
12380
  }
12381
+ export interface GoogleSheetsOAuth2AuthorizationCredential {
12382
+ provider: 'google.sheets.oauth2-authorization';
12383
+ /** The authorization ID for the OAuth2 authorization */
12384
+ authorizationId: string;
12385
+ /** This is the unique identifier for the credential. */
12386
+ id: string;
12387
+ /** This is the unique identifier for the org that this credential belongs to. */
12388
+ orgId: string;
12389
+ /**
12390
+ * This is the ISO 8601 date-time string of when the credential was created.
12391
+ * @format date-time
12392
+ */
12393
+ createdAt: string;
12394
+ /**
12395
+ * This is the ISO 8601 date-time string of when the assistant was last updated.
12396
+ * @format date-time
12397
+ */
12398
+ updatedAt: string;
12399
+ /**
12400
+ * This is the name of credential. This is just for your reference.
12401
+ * @minLength 1
12402
+ * @maxLength 40
12403
+ */
12404
+ name?: string;
12405
+ }
12406
+ export interface SlackOAuth2AuthorizationCredential {
12407
+ provider: 'slack.oauth2-authorization';
12408
+ /** The authorization ID for the OAuth2 authorization */
12409
+ authorizationId: string;
12410
+ /** This is the unique identifier for the credential. */
12411
+ id: string;
12412
+ /** This is the unique identifier for the org that this credential belongs to. */
12413
+ orgId: string;
12414
+ /**
12415
+ * This is the ISO 8601 date-time string of when the credential was created.
12416
+ * @format date-time
12417
+ */
12418
+ createdAt: string;
12419
+ /**
12420
+ * This is the ISO 8601 date-time string of when the assistant was last updated.
12421
+ * @format date-time
12422
+ */
12423
+ updatedAt: string;
12424
+ /**
12425
+ * This is the name of credential. This is just for your reference.
12426
+ * @minLength 1
12427
+ * @maxLength 40
12428
+ */
12429
+ name?: string;
12430
+ }
11111
12431
  export interface CreateCerebrasCredentialDTO {
11112
12432
  provider: 'cerebras';
11113
12433
  /**
@@ -11770,6 +13090,26 @@ export interface UpdateGoogleCalendarOAuth2AuthorizationCredentialDTO {
11770
13090
  */
11771
13091
  name?: string;
11772
13092
  }
13093
+ export interface UpdateGoogleSheetsOAuth2AuthorizationCredentialDTO {
13094
+ /** The authorization ID for the OAuth2 authorization */
13095
+ authorizationId?: string;
13096
+ /**
13097
+ * This is the name of credential. This is just for your reference.
13098
+ * @minLength 1
13099
+ * @maxLength 40
13100
+ */
13101
+ name?: string;
13102
+ }
13103
+ export interface UpdateSlackOAuth2AuthorizationCredentialDTO {
13104
+ /** The authorization ID for the OAuth2 authorization */
13105
+ authorizationId?: string;
13106
+ /**
13107
+ * This is the name of credential. This is just for your reference.
13108
+ * @minLength 1
13109
+ * @maxLength 40
13110
+ */
13111
+ name?: string;
13112
+ }
11773
13113
  export interface CredentialSessionResponse {
11774
13114
  sessionToken: string;
11775
13115
  }
@@ -11800,7 +13140,7 @@ export interface CredentialActionRequest {
11800
13140
  }
11801
13141
  export interface CredentialSessionDTO {
11802
13142
  /** The type of credential to generate a session for. Only Nango user-facing providers are supported. */
11803
- provider: 'google.calendar.oauth2-client' | 'google.calendar.oauth2-authorization' | 'google.sheets.oauth2-authorization';
13143
+ provider: 'google.calendar.oauth2-client' | 'google.calendar.oauth2-authorization' | 'google.sheets.oauth2-authorization' | 'slack.oauth2-authorization';
11804
13144
  }
11805
13145
  export interface ToolTemplateSetup {
11806
13146
  title: string;
@@ -11966,6 +13306,12 @@ export interface SyncVoiceLibraryDTO {
11966
13306
  /** List of providers you want to sync. */
11967
13307
  providers?: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame';
11968
13308
  }
13309
+ export interface CreateSesameVoiceDTO {
13310
+ /** The name of the voice. */
13311
+ voiceName?: string;
13312
+ /** The transcript of the utterance. */
13313
+ transcription?: string;
13314
+ }
11969
13315
  export interface VoiceLibraryVoiceResponse {
11970
13316
  voiceId: string;
11971
13317
  name: string;
@@ -12036,6 +13382,8 @@ export interface ClientMessageSpeechUpdate {
12036
13382
  status: 'started' | 'stopped';
12037
13383
  /** This is the role which the speech update is for. */
12038
13384
  role: 'assistant' | 'user';
13385
+ /** This is the turn number of the speech update (0-indexed). */
13386
+ turn?: number;
12039
13387
  }
12040
13388
  export interface ClientMessageTranscript {
12041
13389
  /** This is the type of the message. "transcript" is sent as transcriber outputs partial or final transcript. */
@@ -12120,8 +13468,8 @@ export interface ServerMessageAssistantRequest {
12120
13468
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12121
13469
  /** This is the type of the message. "assistant-request" is sent to fetch assistant configuration for an incoming call. */
12122
13470
  type: 'assistant-request';
12123
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12124
- timestamp?: string;
13471
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13472
+ timestamp?: number;
12125
13473
  /**
12126
13474
  * This is a live version of the `call.artifact`.
12127
13475
  *
@@ -12172,8 +13520,8 @@ export interface ServerMessageConversationUpdate {
12172
13520
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
12173
13521
  /** This is the most up-to-date conversation history at the time the message is sent, formatted for OpenAI. */
12174
13522
  messagesOpenAIFormatted: OpenAIMessage[];
12175
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12176
- timestamp?: string;
13523
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13524
+ timestamp?: number;
12177
13525
  /**
12178
13526
  * This is a live version of the `call.artifact`.
12179
13527
  *
@@ -12221,13 +13569,13 @@ export interface ServerMessageEndOfCallReport {
12221
13569
  /** This is the type of the message. "end-of-call-report" is sent when the call ends and post-processing is complete. */
12222
13570
  type: 'end-of-call-report';
12223
13571
  /** This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id. */
12224
- endedReason: 'assistant-not-valid' | 'assistant-not-provided' | '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' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'assistant-said-message-with-end-call-enabled' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'db-error' | 'assistant-not-found' | 'license-check-failed' | '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-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-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-no-available-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'vapifault-phone-call-worker-setup-socket-error' | 'vapifault-phone-call-worker-worker-setup-socket-timeout' | 'vapifault-phone-call-worker-could-not-find-call' | 'vapifault-transport-never-connected' | 'vapifault-web-call-worker-setup-failed' | 'vapifault-transport-connected-but-call-not-active' | 'vapifault-call-started-but-connection-to-transport-missing' | 'pipeline-error-openai-llm-failed' | 'pipeline-error-azure-openai-llm-failed' | 'pipeline-error-groq-llm-failed' | 'pipeline-error-google-llm-failed' | 'pipeline-error-xai-llm-failed' | 'pipeline-error-mistral-llm-failed' | 'pipeline-error-inflection-ai-llm-failed' | 'pipeline-error-cerebras-llm-failed' | 'pipeline-error-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-500-server-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-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-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-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-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-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-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-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-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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-500-server-error' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | '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' | 'pipeline-error-tavus-video-failed' | 'pipeline-error-custom-transcriber-failed' | 'pipeline-error-11labs-transcriber-failed' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
13572
+ endedReason: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-providerfault-transport-never-connected' | 'call.in-progress.error-vapifault-worker-not-available' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'call.forwarding.operator-busy' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
12225
13573
  /** This is the cost of the call in USD. This can also be found at `call.cost` on GET /call/:id. */
12226
13574
  cost?: number;
12227
13575
  /** These are the costs of individual components of the call in USD. This can also be found at `call.costs` on GET /call/:id. */
12228
13576
  costs?: (TransportCost | TranscriberCost | ModelCost | VoiceCost | VapiCost | VoicemailDetectionCost | AnalysisCost)[];
12229
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12230
- timestamp?: string;
13577
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13578
+ timestamp?: number;
12231
13579
  /** These are the artifacts from the call. This can also be found at `call.artifact` on GET /call/:id. */
12232
13580
  artifact: Artifact;
12233
13581
  /**
@@ -12288,8 +13636,8 @@ export interface ServerMessageHang {
12288
13636
  * - etc.
12289
13637
  */
12290
13638
  type: 'hang';
12291
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12292
- timestamp?: string;
13639
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13640
+ timestamp?: number;
12293
13641
  /**
12294
13642
  * This is a live version of the `call.artifact`.
12295
13643
  *
@@ -12340,8 +13688,8 @@ export interface ServerMessageKnowledgeBaseRequest {
12340
13688
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
12341
13689
  /** This is just `messages` formatted for OpenAI. */
12342
13690
  messagesOpenAIFormatted: OpenAIMessage[];
12343
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12344
- timestamp?: string;
13691
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13692
+ timestamp?: number;
12345
13693
  /**
12346
13694
  * This is a live version of the `call.artifact`.
12347
13695
  *
@@ -12388,8 +13736,8 @@ export interface ServerMessageModelOutput {
12388
13736
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12389
13737
  /** This is the type of the message. "model-output" is sent as the model outputs tokens. */
12390
13738
  type: 'model-output';
12391
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12392
- timestamp?: string;
13739
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13740
+ timestamp?: number;
12393
13741
  /**
12394
13742
  * This is a live version of the `call.artifact`.
12395
13743
  *
@@ -12446,8 +13794,8 @@ export interface ServerMessagePhoneCallControl {
12446
13794
  request: 'forward' | 'hang-up';
12447
13795
  /** This is the destination to forward the call to if the request is "forward". */
12448
13796
  destination?: TransferDestinationNumber | TransferDestinationSip;
12449
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12450
- timestamp?: string;
13797
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13798
+ timestamp?: number;
12451
13799
  /**
12452
13800
  * This is a live version of the `call.artifact`.
12453
13801
  *
@@ -12498,8 +13846,10 @@ export interface ServerMessageSpeechUpdate {
12498
13846
  status: 'started' | 'stopped';
12499
13847
  /** This is the role which the speech update is for. */
12500
13848
  role: 'assistant' | 'user';
12501
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12502
- timestamp?: string;
13849
+ /** This is the turn number of the speech update (0-indexed). */
13850
+ turn?: number;
13851
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13852
+ timestamp?: number;
12503
13853
  /**
12504
13854
  * This is a live version of the `call.artifact`.
12505
13855
  *
@@ -12549,15 +13899,15 @@ export interface ServerMessageStatusUpdate {
12549
13899
  /** This is the status of the call. */
12550
13900
  status: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
12551
13901
  /** This is the reason the call ended. This is only sent if the status is "ended". */
12552
- endedReason?: 'assistant-not-valid' | 'assistant-not-provided' | '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' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'assistant-said-message-with-end-call-enabled' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'db-error' | 'assistant-not-found' | 'license-check-failed' | '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-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-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-no-available-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'vapifault-phone-call-worker-setup-socket-error' | 'vapifault-phone-call-worker-worker-setup-socket-timeout' | 'vapifault-phone-call-worker-could-not-find-call' | 'vapifault-transport-never-connected' | 'vapifault-web-call-worker-setup-failed' | 'vapifault-transport-connected-but-call-not-active' | 'vapifault-call-started-but-connection-to-transport-missing' | 'pipeline-error-openai-llm-failed' | 'pipeline-error-azure-openai-llm-failed' | 'pipeline-error-groq-llm-failed' | 'pipeline-error-google-llm-failed' | 'pipeline-error-xai-llm-failed' | 'pipeline-error-mistral-llm-failed' | 'pipeline-error-inflection-ai-llm-failed' | 'pipeline-error-cerebras-llm-failed' | 'pipeline-error-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-500-server-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-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-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-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-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-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-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-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-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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | '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-llm-failed' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-500-server-error' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | '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' | 'pipeline-error-tavus-video-failed' | 'pipeline-error-custom-transcriber-failed' | 'pipeline-error-11labs-transcriber-failed' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
13902
+ endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-providerfault-transport-never-connected' | 'call.in-progress.error-vapifault-worker-not-available' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'call.forwarding.operator-busy' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
12553
13903
  /** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
12554
13904
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
12555
13905
  /** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
12556
13906
  messagesOpenAIFormatted?: OpenAIMessage[];
12557
13907
  /** This is the destination the call is being transferred to. This is only sent if the status is "forwarding". */
12558
13908
  destination?: TransferDestinationNumber | TransferDestinationSip;
12559
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12560
- timestamp?: string;
13909
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13910
+ timestamp?: number;
12561
13911
  /**
12562
13912
  * This is a live version of the `call.artifact`.
12563
13913
  *
@@ -12616,8 +13966,8 @@ export interface ServerMessageToolCalls {
12616
13966
  type?: 'tool-calls';
12617
13967
  /** This is the list of tools calls that the model is requesting along with the original tool configuration. */
12618
13968
  toolWithToolCallList: (FunctionToolWithToolCall | GhlToolWithToolCall | MakeToolWithToolCall | BashToolWithToolCall | ComputerToolWithToolCall | TextEditorToolWithToolCall | GoogleCalendarCreateEventToolWithToolCall)[];
12619
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12620
- timestamp?: string;
13969
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13970
+ timestamp?: number;
12621
13971
  /**
12622
13972
  * This is a live version of the `call.artifact`.
12623
13973
  *
@@ -12666,8 +14016,8 @@ export interface ServerMessageTransferDestinationRequest {
12666
14016
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12667
14017
  /** This is the type of the message. "transfer-destination-request" is sent when the model is requesting transfer but destination is unknown. */
12668
14018
  type: 'transfer-destination-request';
12669
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12670
- timestamp?: string;
14019
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14020
+ timestamp?: number;
12671
14021
  /**
12672
14022
  * This is a live version of the `call.artifact`.
12673
14023
  *
@@ -12716,8 +14066,8 @@ export interface ServerMessageTransferUpdate {
12716
14066
  type: 'transfer-update';
12717
14067
  /** This is the destination of the transfer. */
12718
14068
  destination?: TransferDestinationAssistant | TransferDestinationStep | TransferDestinationNumber | TransferDestinationSip;
12719
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12720
- timestamp?: string;
14069
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14070
+ timestamp?: number;
12721
14071
  /**
12722
14072
  * This is a live version of the `call.artifact`.
12723
14073
  *
@@ -12772,8 +14122,8 @@ export interface ServerMessageTranscript {
12772
14122
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12773
14123
  /** This is the type of the message. "transcript" is sent as transcriber outputs partial or final transcript. */
12774
14124
  type: 'transcript' | "transcript[transcriptType='final']";
12775
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12776
- timestamp?: string;
14125
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14126
+ timestamp?: number;
12777
14127
  /**
12778
14128
  * This is a live version of the `call.artifact`.
12779
14129
  *
@@ -12826,8 +14176,8 @@ export interface ServerMessageUserInterrupted {
12826
14176
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12827
14177
  /** This is the type of the message. "user-interrupted" is sent when the user interrupts the assistant. */
12828
14178
  type: 'user-interrupted';
12829
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12830
- timestamp?: string;
14179
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14180
+ timestamp?: number;
12831
14181
  /**
12832
14182
  * This is a live version of the `call.artifact`.
12833
14183
  *
@@ -12874,8 +14224,8 @@ export interface ServerMessageLanguageChangeDetected {
12874
14224
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12875
14225
  /** This is the type of the message. "language-change-detected" is sent when the transcriber is automatically switched based on the detected language. */
12876
14226
  type: 'language-change-detected';
12877
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12878
- timestamp?: string;
14227
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14228
+ timestamp?: number;
12879
14229
  /**
12880
14230
  * This is a live version of the `call.artifact`.
12881
14231
  *
@@ -12924,8 +14274,8 @@ export interface ServerMessageVoiceInput {
12924
14274
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12925
14275
  /** This is the type of the message. "voice-input" is sent when a generation is requested from voice provider. */
12926
14276
  type: 'voice-input';
12927
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12928
- timestamp?: string;
14277
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14278
+ timestamp?: number;
12929
14279
  /**
12930
14280
  * This is a live version of the `call.artifact`.
12931
14281
  *
@@ -12997,8 +14347,8 @@ export interface ServerMessageVoiceRequest {
12997
14347
  * ```
12998
14348
  */
12999
14349
  type: 'voice-request';
13000
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
13001
- timestamp?: string;
14350
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14351
+ timestamp?: number;
13002
14352
  /**
13003
14353
  * This is a live version of the `call.artifact`.
13004
14354
  *
@@ -13124,6 +14474,8 @@ export interface ToolCallResult {
13124
14474
  * 3. a response generated by the model, if neither exist
13125
14475
  */
13126
14476
  error?: string;
14477
+ /** This is optional metadata for the tool call result to be sent to the client. */
14478
+ metadata?: object;
13127
14479
  }
13128
14480
  export interface ServerMessageResponseToolCalls {
13129
14481
  /** These are the results of the "tool-calls" message. */
@@ -13291,6 +14643,8 @@ export interface ToolCallResultMessage {
13291
14643
  time: number;
13292
14644
  /** The number of seconds from the start of the conversation. */
13293
14645
  secondsFromStart: number;
14646
+ /** The metadata for the tool call result. */
14647
+ metadata?: object;
13294
14648
  }
13295
14649
  export interface TransportCost {
13296
14650
  /** This is the type of cost, always 'transport' for this class. */
@@ -13815,7 +15169,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13815
15169
  * @request POST:/call
13816
15170
  * @secure
13817
15171
  */
13818
- callControllerCreate: (data: CreateCallDTO, params?: RequestParams) => Promise<HttpResponse<Call, any>>;
15172
+ callControllerCreate: (data: CreateCallDTO, params?: RequestParams) => Promise<HttpResponse<Call | CallBatchResponse, any>>;
13819
15173
  /**
13820
15174
  * No description
13821
15175
  *
@@ -13923,7 +15277,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13923
15277
  * @deprecated
13924
15278
  * @secure
13925
15279
  */
13926
- callControllerCreatePhoneCall: (data: CreateOutboundCallDTO, params?: RequestParams) => Promise<HttpResponse<Call, any>>;
15280
+ callControllerCreatePhoneCall: (data: CreateOutboundCallDTO, params?: RequestParams) => Promise<HttpResponse<Call | CallBatchResponse, any>>;
13927
15281
  /**
13928
15282
  * No description
13929
15283
  *
@@ -14612,7 +15966,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14612
15966
  type: 'google.calendar.event.create';
14613
15967
  } & CreateGoogleCalendarCreateEventToolDTO) | ({
14614
15968
  type: 'google.sheets.row.append';
14615
- } & CreateGoogleSheetsRowAppendToolDTO), params?: RequestParams) => Promise<HttpResponse<({
15969
+ } & CreateGoogleSheetsRowAppendToolDTO) | ({
15970
+ type: 'google.calendar.availability.check';
15971
+ } & CreateGoogleCalendarCheckAvailabilityToolDTO) | ({
15972
+ type: 'slack.message.send';
15973
+ } & CreateSlackSendMessageToolDTO) | ({
15974
+ type: 'sms';
15975
+ } & CreateSmsSendToolDTO) | ({
15976
+ type: 'mcp';
15977
+ } & CreateMcpToolDTO), params?: RequestParams) => Promise<HttpResponse<({
14616
15978
  type: 'dtmf';
14617
15979
  } & DtmfTool) | ({
14618
15980
  type: 'endCall';
@@ -14638,7 +16000,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14638
16000
  type: 'google.calendar.event.create';
14639
16001
  } & GoogleCalendarCreateEventTool) | ({
14640
16002
  type: 'google.sheets.row.append';
14641
- } & GoogleSheetsRowAppendTool), any>>;
16003
+ } & GoogleSheetsRowAppendTool) | ({
16004
+ type: 'google.calendar.availability.check';
16005
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16006
+ type: 'slack.message.send';
16007
+ } & SlackSendMessageTool) | ({
16008
+ type: 'sms';
16009
+ } & SmsSendTool) | ({
16010
+ type: 'mcp';
16011
+ } & McpTool), any>>;
14642
16012
  /**
14643
16013
  * No description
14644
16014
  *
@@ -14721,7 +16091,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14721
16091
  type: 'google.calendar.event.create';
14722
16092
  } & GoogleCalendarCreateEventTool) | ({
14723
16093
  type: 'google.sheets.row.append';
14724
- } & GoogleSheetsRowAppendTool))[], any>>;
16094
+ } & GoogleSheetsRowAppendTool) | ({
16095
+ type: 'google.calendar.availability.check';
16096
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16097
+ type: 'slack.message.send';
16098
+ } & SlackSendMessageTool) | ({
16099
+ type: 'sms';
16100
+ } & SmsSendTool) | ({
16101
+ type: 'mcp';
16102
+ } & McpTool))[], any>>;
14725
16103
  /**
14726
16104
  * No description
14727
16105
  *
@@ -14757,7 +16135,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14757
16135
  type: 'google.calendar.event.create';
14758
16136
  } & GoogleCalendarCreateEventTool) | ({
14759
16137
  type: 'google.sheets.row.append';
14760
- } & GoogleSheetsRowAppendTool), any>>;
16138
+ } & GoogleSheetsRowAppendTool) | ({
16139
+ type: 'google.calendar.availability.check';
16140
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16141
+ type: 'slack.message.send';
16142
+ } & SlackSendMessageTool) | ({
16143
+ type: 'sms';
16144
+ } & SmsSendTool) | ({
16145
+ type: 'mcp';
16146
+ } & McpTool), any>>;
14761
16147
  /**
14762
16148
  * No description
14763
16149
  *
@@ -14793,7 +16179,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14793
16179
  type: 'google.calendar.event.create';
14794
16180
  } & UpdateGoogleCalendarCreateEventToolDTO) | ({
14795
16181
  type: 'google.sheets.row.append';
14796
- } & UpdateGoogleSheetsRowAppendToolDTO), params?: RequestParams) => Promise<HttpResponse<({
16182
+ } & UpdateGoogleSheetsRowAppendToolDTO) | ({
16183
+ type: 'google.calendar.availability.check';
16184
+ } & UpdateGoogleCalendarCheckAvailabilityToolDTO) | ({
16185
+ type: 'slack.message.send';
16186
+ } & UpdateSlackSendMessageToolDTO) | ({
16187
+ type: 'sms';
16188
+ } & UpdateSmsSendToolDTO) | ({
16189
+ type: 'mcp';
16190
+ } & UpdateMcpToolDTO), params?: RequestParams) => Promise<HttpResponse<({
14797
16191
  type: 'dtmf';
14798
16192
  } & DtmfTool) | ({
14799
16193
  type: 'endCall';
@@ -14819,7 +16213,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14819
16213
  type: 'google.calendar.event.create';
14820
16214
  } & GoogleCalendarCreateEventTool) | ({
14821
16215
  type: 'google.sheets.row.append';
14822
- } & GoogleSheetsRowAppendTool), any>>;
16216
+ } & GoogleSheetsRowAppendTool) | ({
16217
+ type: 'google.calendar.availability.check';
16218
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16219
+ type: 'slack.message.send';
16220
+ } & SlackSendMessageTool) | ({
16221
+ type: 'sms';
16222
+ } & SmsSendTool) | ({
16223
+ type: 'mcp';
16224
+ } & McpTool), any>>;
14823
16225
  /**
14824
16226
  * No description
14825
16227
  *
@@ -14855,7 +16257,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14855
16257
  type: 'google.calendar.event.create';
14856
16258
  } & GoogleCalendarCreateEventTool) | ({
14857
16259
  type: 'google.sheets.row.append';
14858
- } & GoogleSheetsRowAppendTool), any>>;
16260
+ } & GoogleSheetsRowAppendTool) | ({
16261
+ type: 'google.calendar.availability.check';
16262
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16263
+ type: 'slack.message.send';
16264
+ } & SlackSendMessageTool) | ({
16265
+ type: 'sms';
16266
+ } & SmsSendTool) | ({
16267
+ type: 'mcp';
16268
+ } & McpTool), any>>;
14859
16269
  };
14860
16270
  file: {
14861
16271
  /**
@@ -15865,6 +17275,16 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15865
17275
  * @secure
15866
17276
  */
15867
17277
  orgControllerUserUpdate: (id: string, data: UpdateUserRoleDTO, params?: RequestParams) => Promise<HttpResponse<void, any>>;
17278
+ /**
17279
+ * No description
17280
+ *
17281
+ * @tags Orgs
17282
+ * @name OrgControllerOrgToken
17283
+ * @summary Generate User Org JWT
17284
+ * @request GET:/org/{id}/auth
17285
+ * @secure
17286
+ */
17287
+ orgControllerOrgToken: (id: string, params?: RequestParams) => Promise<HttpResponse<JwtResponse, any>>;
15868
17288
  };
15869
17289
  token: {
15870
17290
  /**
@@ -15975,7 +17395,101 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15975
17395
  * @request POST:/credential
15976
17396
  * @secure
15977
17397
  */
15978
- credentialControllerCreate: (data: CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO, params?: RequestParams) => Promise<HttpResponse<AnthropicCredential | AnyscaleCredential | AssemblyAICredential | AzureCredential | AzureOpenAICredential | ByoSipTrunkCredential | CartesiaCredential | CerebrasCredential | CloudflareCredential | CustomLLMCredential | DeepgramCredential | DeepInfraCredential | DeepSeekCredential | ElevenLabsCredential | GcpCredential | GladiaCredential | GoHighLevelCredential | GoogleCredential | GroqCredential | HumeCredential | InflectionAICredential | LangfuseCredential | LmntCredential | MakeCredential | MistralCredential | NeuphonicCredential | OpenAICredential | OpenRouterCredential | PerplexityAICredential | PlayHTCredential | RimeAICredential | RunpodCredential | S3Credential | SmallestAICredential | SpeechmaticsCredential | SupabaseCredential | TavusCredential | TogetherAICredential | TrieveCredential | TwilioCredential | VonageCredential | WebhookCredential | XAiCredential | GoogleCalendarOAuth2ClientCredential | GoogleCalendarOAuth2AuthorizationCredential, any>>;
17398
+ credentialControllerCreate: (data: ({
17399
+ provider: '11labs';
17400
+ } & CreateElevenLabsCredentialDTO) | ({
17401
+ provider: 'anthropic';
17402
+ } & CreateAnthropicCredentialDTO) | ({
17403
+ provider: 'anyscale';
17404
+ } & CreateAnyscaleCredentialDTO) | ({
17405
+ provider: 'assembly-ai';
17406
+ } & CreateAssemblyAICredentialDTO) | ({
17407
+ provider: 'azure-openai';
17408
+ } & CreateAzureOpenAICredentialDTO) | ({
17409
+ provider: 'azure';
17410
+ } & CreateAzureCredentialDTO) | ({
17411
+ provider: 'byo-sip-trunk';
17412
+ } & CreateByoSipTrunkCredentialDTO) | ({
17413
+ provider: 'cartesia';
17414
+ } & CreateCartesiaCredentialDTO) | ({
17415
+ provider: 'cerebras';
17416
+ } & CreateCerebrasCredentialDTO) | ({
17417
+ provider: 'cloudflare';
17418
+ } & CreateCloudflareCredentialDTO) | ({
17419
+ provider: 'custom-llm';
17420
+ } & CreateCustomLLMCredentialDTO) | ({
17421
+ provider: 'deepgram';
17422
+ } & CreateDeepgramCredentialDTO) | ({
17423
+ provider: 'deepinfra';
17424
+ } & CreateDeepInfraCredentialDTO) | ({
17425
+ provider: 'deep-seek';
17426
+ } & CreateDeepSeekCredentialDTO) | ({
17427
+ provider: 'gcp';
17428
+ } & CreateGcpCredentialDTO) | ({
17429
+ provider: 'gladia';
17430
+ } & CreateGladiaCredentialDTO) | ({
17431
+ provider: 'gohighlevel';
17432
+ } & CreateGoHighLevelCredentialDTO) | ({
17433
+ provider: 'google';
17434
+ } & CreateGoogleCredentialDTO) | ({
17435
+ provider: 'groq';
17436
+ } & CreateGroqCredentialDTO) | ({
17437
+ provider: 'inflection-ai';
17438
+ } & CreateInflectionAICredentialDTO) | ({
17439
+ provider: 'langfuse';
17440
+ } & CreateLangfuseCredentialDTO) | ({
17441
+ provider: 'lmnt';
17442
+ } & CreateLmntCredentialDTO) | ({
17443
+ provider: 'make';
17444
+ } & CreateMakeCredentialDTO) | ({
17445
+ provider: 'openai';
17446
+ } & CreateOpenAICredentialDTO) | ({
17447
+ provider: 'openrouter';
17448
+ } & CreateOpenRouterCredentialDTO) | ({
17449
+ provider: 'perplexity-ai';
17450
+ } & CreatePerplexityAICredentialDTO) | ({
17451
+ provider: 'playht';
17452
+ } & CreatePlayHTCredentialDTO) | ({
17453
+ provider: 'rime-ai';
17454
+ } & CreateRimeAICredentialDTO) | ({
17455
+ provider: 'runpod';
17456
+ } & CreateRunpodCredentialDTO) | ({
17457
+ provider: 's3';
17458
+ } & CreateS3CredentialDTO) | ({
17459
+ provider: 'supabase';
17460
+ } & CreateSupabaseCredentialDTO) | ({
17461
+ provider: 'smallest-ai';
17462
+ } & CreateSmallestAICredentialDTO) | ({
17463
+ provider: 'tavus';
17464
+ } & CreateTavusCredentialDTO) | ({
17465
+ provider: 'together-ai';
17466
+ } & CreateTogetherAICredentialDTO) | ({
17467
+ provider: 'twilio';
17468
+ } & CreateTwilioCredentialDTO) | ({
17469
+ provider: 'vonage';
17470
+ } & CreateVonageCredentialDTO) | ({
17471
+ provider: 'webhook';
17472
+ } & CreateWebhookCredentialDTO) | ({
17473
+ provider: 'xai';
17474
+ } & CreateXAiCredentialDTO) | ({
17475
+ provider: 'neuphonic';
17476
+ } & CreateNeuphonicCredentialDTO) | ({
17477
+ provider: 'hume';
17478
+ } & CreateHumeCredentialDTO) | ({
17479
+ provider: 'mistral';
17480
+ } & CreateMistralCredentialDTO) | ({
17481
+ provider: 'speechmatics';
17482
+ } & CreateSpeechmaticsCredentialDTO) | ({
17483
+ provider: 'trieve';
17484
+ } & CreateTrieveCredentialDTO) | ({
17485
+ provider: 'google.calendar.oauth2-client';
17486
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
17487
+ provider: 'google.calendar.oauth2-authorization';
17488
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
17489
+ provider: 'google.sheets.oauth2-authorization';
17490
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
17491
+ provider: 'slack.oauth2-authorization';
17492
+ } & CreateSlackOAuth2AuthorizationCredentialDTO), params?: RequestParams) => Promise<HttpResponse<any, any>>;
15979
17493
  /**
15980
17494
  * No description
15981
17495
  *
@@ -16032,7 +17546,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16032
17546
  * @format date-time
16033
17547
  */
16034
17548
  updatedAtLe?: string;
16035
- }, params?: RequestParams) => Promise<HttpResponse<(AnthropicCredential | AnyscaleCredential | AssemblyAICredential | AzureCredential | AzureOpenAICredential | ByoSipTrunkCredential | CartesiaCredential | CerebrasCredential | CloudflareCredential | CustomLLMCredential | DeepgramCredential | DeepInfraCredential | DeepSeekCredential | ElevenLabsCredential | GcpCredential | GladiaCredential | GoHighLevelCredential | GoogleCredential | GroqCredential | HumeCredential | InflectionAICredential | LangfuseCredential | LmntCredential | MakeCredential | MistralCredential | NeuphonicCredential | OpenAICredential | OpenRouterCredential | PerplexityAICredential | PlayHTCredential | RimeAICredential | RunpodCredential | S3Credential | SmallestAICredential | SpeechmaticsCredential | SupabaseCredential | TavusCredential | TogetherAICredential | TrieveCredential | TwilioCredential | VonageCredential | WebhookCredential | XAiCredential | GoogleCalendarOAuth2ClientCredential | GoogleCalendarOAuth2AuthorizationCredential)[], any>>;
17549
+ }, params?: RequestParams) => Promise<HttpResponse<any[], any>>;
16036
17550
  /**
16037
17551
  * No description
16038
17552
  *
@@ -16042,7 +17556,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16042
17556
  * @request GET:/credential/{id}
16043
17557
  * @secure
16044
17558
  */
16045
- credentialControllerFindOne: (id: string, params?: RequestParams) => Promise<HttpResponse<AnthropicCredential | AnyscaleCredential | AssemblyAICredential | AzureCredential | AzureOpenAICredential | ByoSipTrunkCredential | CartesiaCredential | CerebrasCredential | CloudflareCredential | CustomLLMCredential | DeepgramCredential | DeepInfraCredential | DeepSeekCredential | ElevenLabsCredential | GcpCredential | GladiaCredential | GoHighLevelCredential | GoogleCredential | GroqCredential | HumeCredential | InflectionAICredential | LangfuseCredential | LmntCredential | MakeCredential | MistralCredential | NeuphonicCredential | OpenAICredential | OpenRouterCredential | PerplexityAICredential | PlayHTCredential | RimeAICredential | RunpodCredential | S3Credential | SmallestAICredential | SpeechmaticsCredential | SupabaseCredential | TavusCredential | TogetherAICredential | TrieveCredential | TwilioCredential | VonageCredential | WebhookCredential | XAiCredential | GoogleCalendarOAuth2ClientCredential | GoogleCalendarOAuth2AuthorizationCredential, any>>;
17559
+ credentialControllerFindOne: (id: string, params?: RequestParams) => Promise<HttpResponse<any, any>>;
16046
17560
  /**
16047
17561
  * No description
16048
17562
  *
@@ -16052,7 +17566,85 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16052
17566
  * @request PATCH:/credential/{id}
16053
17567
  * @secure
16054
17568
  */
16055
- credentialControllerUpdate: (id: string, data: UpdateAnthropicCredentialDTO | UpdateAnyscaleCredentialDTO | UpdateAssemblyAICredentialDTO | UpdateAzureCredentialDTO | UpdateAzureOpenAICredentialDTO | UpdateByoSipTrunkCredentialDTO | UpdateCartesiaCredentialDTO | UpdateCerebrasCredentialDTO | UpdateCloudflareCredentialDTO | UpdateCustomLLMCredentialDTO | UpdateDeepgramCredentialDTO | UpdateDeepInfraCredentialDTO | UpdateDeepSeekCredentialDTO | UpdateElevenLabsCredentialDTO | UpdateGcpCredentialDTO | UpdateGladiaCredentialDTO | UpdateGoHighLevelCredentialDTO | UpdateGoogleCredentialDTO | UpdateGroqCredentialDTO | UpdateHumeCredentialDTO | UpdateInflectionAICredentialDTO | UpdateLangfuseCredentialDTO | UpdateLmntCredentialDTO | UpdateMakeCredentialDTO | UpdateMistralCredentialDTO | UpdateNeuphonicCredentialDTO | UpdateOpenAICredentialDTO | UpdateOpenRouterCredentialDTO | UpdatePerplexityAICredentialDTO | UpdatePlayHTCredentialDTO | UpdateRimeAICredentialDTO | UpdateRunpodCredentialDTO | UpdateS3CredentialDTO | UpdateSmallestAICredentialDTO | UpdateSpeechmaticsCredentialDTO | UpdateSupabaseCredentialDTO | UpdateTavusCredentialDTO | UpdateTogetherAICredentialDTO | UpdateTrieveCredentialDTO | UpdateTwilioCredentialDTO | UpdateVonageCredentialDTO | UpdateWebhookCredentialDTO | UpdateXAiCredentialDTO | UpdateGoogleCalendarOAuth2ClientCredentialDTO | UpdateGoogleCalendarOAuth2AuthorizationCredentialDTO, params?: RequestParams) => Promise<HttpResponse<AnthropicCredential | AnyscaleCredential | AssemblyAICredential | AzureCredential | AzureOpenAICredential | ByoSipTrunkCredential | CartesiaCredential | CerebrasCredential | CloudflareCredential | CustomLLMCredential | DeepgramCredential | DeepInfraCredential | DeepSeekCredential | ElevenLabsCredential | GcpCredential | GladiaCredential | GoHighLevelCredential | GoogleCredential | GroqCredential | HumeCredential | InflectionAICredential | LangfuseCredential | LmntCredential | MakeCredential | MistralCredential | NeuphonicCredential | OpenAICredential | OpenRouterCredential | PerplexityAICredential | PlayHTCredential | RimeAICredential | RunpodCredential | S3Credential | SmallestAICredential | SpeechmaticsCredential | SupabaseCredential | TavusCredential | TogetherAICredential | TrieveCredential | TwilioCredential | VonageCredential | WebhookCredential | XAiCredential | GoogleCalendarOAuth2ClientCredential | GoogleCalendarOAuth2AuthorizationCredential, any>>;
17569
+ credentialControllerUpdate: (id: string, data: ({
17570
+ provider: '11labs';
17571
+ } & UpdateElevenLabsCredentialDTO) | ({
17572
+ provider: 'anthropic';
17573
+ } & UpdateAnthropicCredentialDTO) | ({
17574
+ provider: 'anyscale';
17575
+ } & UpdateAnyscaleCredentialDTO) | ({
17576
+ provider: 'assembly-ai';
17577
+ } & UpdateAssemblyAICredentialDTO) | ({
17578
+ provider: 'azure-openai';
17579
+ } & UpdateAzureOpenAICredentialDTO) | ({
17580
+ provider: 'azure';
17581
+ } & UpdateAzureCredentialDTO) | ({
17582
+ provider: 'byo-sip-trunk';
17583
+ } & UpdateByoSipTrunkCredentialDTO) | ({
17584
+ provider: 'cartesia';
17585
+ } & UpdateCartesiaCredentialDTO) | ({
17586
+ provider: 'cerebras';
17587
+ } & UpdateCerebrasCredentialDTO) | ({
17588
+ provider: 'custom-llm';
17589
+ } & UpdateCustomLLMCredentialDTO) | ({
17590
+ provider: 'deepgram';
17591
+ } & UpdateDeepgramCredentialDTO) | ({
17592
+ provider: 'deepinfra';
17593
+ } & UpdateDeepInfraCredentialDTO) | ({
17594
+ provider: 'deep-seek';
17595
+ } & UpdateDeepSeekCredentialDTO) | ({
17596
+ provider: 'gcp';
17597
+ } & UpdateGcpCredentialDTO) | ({
17598
+ provider: 'gladia';
17599
+ } & UpdateGladiaCredentialDTO) | ({
17600
+ provider: 'gohighlevel';
17601
+ } & UpdateGoHighLevelCredentialDTO) | ({
17602
+ provider: 'google';
17603
+ } & UpdateGoogleCredentialDTO) | ({
17604
+ provider: 'groq';
17605
+ } & UpdateGroqCredentialDTO) | ({
17606
+ provider: 'inflection-ai';
17607
+ } & UpdateInflectionAICredentialDTO) | ({
17608
+ provider: 'langfuse';
17609
+ } & UpdateLangfuseCredentialDTO) | ({
17610
+ provider: 'lmnt';
17611
+ } & UpdateLmntCredentialDTO) | ({
17612
+ provider: 'make';
17613
+ } & UpdateMakeCredentialDTO) | ({
17614
+ provider: 'openai';
17615
+ } & UpdateOpenAICredentialDTO) | ({
17616
+ provider: 'openrouter';
17617
+ } & UpdateOpenRouterCredentialDTO) | ({
17618
+ provider: 'perplexity-ai';
17619
+ } & UpdatePerplexityAICredentialDTO) | ({
17620
+ provider: 'playht';
17621
+ } & UpdatePlayHTCredentialDTO) | ({
17622
+ provider: 'rime-ai';
17623
+ } & UpdateRimeAICredentialDTO) | ({
17624
+ provider: 'runpod';
17625
+ } & UpdateRunpodCredentialDTO) | ({
17626
+ provider: 's3';
17627
+ } & UpdateS3CredentialDTO) | ({
17628
+ provider: 'supabase';
17629
+ } & UpdateSupabaseCredentialDTO) | ({
17630
+ provider: 'smallest-ai';
17631
+ } & UpdateSmallestAICredentialDTO) | ({
17632
+ provider: 'neuphonic';
17633
+ } & UpdateNeuphonicCredentialDTO) | ({
17634
+ provider: 'hume';
17635
+ } & UpdateHumeCredentialDTO) | ({
17636
+ provider: 'tavus';
17637
+ } & UpdateTavusCredentialDTO) | ({
17638
+ provider: 'together-ai';
17639
+ } & UpdateTogetherAICredentialDTO) | ({
17640
+ provider: 'twilio';
17641
+ } & UpdateTwilioCredentialDTO) | ({
17642
+ provider: 'vonage';
17643
+ } & UpdateVonageCredentialDTO) | ({
17644
+ provider: 'webhook';
17645
+ } & UpdateWebhookCredentialDTO) | ({
17646
+ provider: 'xai';
17647
+ } & UpdateXAiCredentialDTO), params?: RequestParams) => Promise<HttpResponse<any, any>>;
16056
17648
  /**
16057
17649
  * No description
16058
17650
  *
@@ -16062,7 +17654,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16062
17654
  * @request DELETE:/credential/{id}
16063
17655
  * @secure
16064
17656
  */
16065
- credentialControllerRemove: (id: string, params?: RequestParams) => Promise<HttpResponse<AnthropicCredential | AnyscaleCredential | AssemblyAICredential | AzureCredential | AzureOpenAICredential | ByoSipTrunkCredential | CartesiaCredential | CerebrasCredential | CloudflareCredential | CustomLLMCredential | DeepgramCredential | DeepInfraCredential | DeepSeekCredential | ElevenLabsCredential | GcpCredential | GladiaCredential | GoHighLevelCredential | GoogleCredential | GroqCredential | HumeCredential | InflectionAICredential | LangfuseCredential | LmntCredential | MakeCredential | MistralCredential | NeuphonicCredential | OpenAICredential | OpenRouterCredential | PerplexityAICredential | PlayHTCredential | RimeAICredential | RunpodCredential | S3Credential | SmallestAICredential | SpeechmaticsCredential | SupabaseCredential | TavusCredential | TogetherAICredential | TrieveCredential | TwilioCredential | VonageCredential | WebhookCredential | XAiCredential | GoogleCalendarOAuth2ClientCredential | GoogleCalendarOAuth2AuthorizationCredential, any>>;
17657
+ credentialControllerRemove: (id: string, params?: RequestParams) => Promise<HttpResponse<any, any>>;
16066
17658
  /**
16067
17659
  * No description
16068
17660
  *
@@ -16298,6 +17890,16 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16298
17890
  * @secure
16299
17891
  */
16300
17892
  voiceLibraryControllerVoiceLibrarySyncDefaultVoices: (data: SyncVoiceLibraryDTO, params?: RequestParams) => Promise<HttpResponse<VoiceLibrary[], any>>;
17893
+ /**
17894
+ * No description
17895
+ *
17896
+ * @tags Voice Library
17897
+ * @name VoiceLibraryControllerVoiceLibraryCreateSesameVoice
17898
+ * @summary Create a new voice in the Voice Library using Sesame
17899
+ * @request POST:/voice-library/create-sesame-voice
17900
+ * @secure
17901
+ */
17902
+ voiceLibraryControllerVoiceLibraryCreateSesameVoice: (data: CreateSesameVoiceDTO, params?: RequestParams) => Promise<HttpResponse<void, any>>;
16301
17903
  };
16302
17904
  provider: {
16303
17905
  /**
@@ -16308,7 +17910,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16308
17910
  * @request GET:/{provider}/workflows
16309
17911
  * @secure
16310
17912
  */
16311
- providerControllerGetWorkflows: (provider: 'make' | 'ghl' | 'google.calendar', query?: {
17913
+ providerControllerGetWorkflows: (provider: 'make' | 'ghl' | 'google.calendar' | 'slack' | 'mcp', query?: {
16312
17914
  locationId?: string;
16313
17915
  }, params?: RequestParams) => Promise<HttpResponse<object, any>>;
16314
17916
  /**
@@ -16319,7 +17921,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16319
17921
  * @request GET:/{provider}/workflows/{workflowId}/hooks
16320
17922
  * @secure
16321
17923
  */
16322
- providerControllerGetWorkflowTriggerHook: (provider: 'make' | 'ghl' | 'google.calendar', workflowId: string, params?: RequestParams) => Promise<HttpResponse<object, any>>;
17924
+ providerControllerGetWorkflowTriggerHook: (provider: 'make' | 'ghl' | 'google.calendar' | 'slack' | 'mcp', workflowId: string, params?: RequestParams) => Promise<HttpResponse<object, any>>;
16323
17925
  /**
16324
17926
  * No description
16325
17927
  *
@@ -16328,7 +17930,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16328
17930
  * @request GET:/{provider}/locations
16329
17931
  * @secure
16330
17932
  */
16331
- providerControllerGetLocations: (provider: 'make' | 'ghl' | 'google.calendar', params?: RequestParams) => Promise<HttpResponse<object, any>>;
17933
+ providerControllerGetLocations: (provider: 'make' | 'ghl' | 'google.calendar' | 'slack' | 'mcp', params?: RequestParams) => Promise<HttpResponse<object, any>>;
16332
17934
  /**
16333
17935
  * No description
16334
17936
  *