@vapi-ai/web 2.2.4 → 2.2.5

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,6 @@
1
+ export interface FallbackTranscriberPlan {
2
+ transcribers: (FallbackAssemblyAITranscriber | FallbackAzureSpeechTranscriber | FallbackCustomTranscriber | FallbackDeepgramTranscriber | FallbackElevenLabsTranscriber | FallbackGladiaTranscriber | FallbackGoogleTranscriber | FallbackTalkscriberTranscriber | FallbackSpeechmaticsTranscriber | FallbackOpenAITranscriber)[];
3
+ }
1
4
  export interface AssemblyAITranscriber {
2
5
  /** This is the transcription provider that will be used. */
3
6
  provider: 'assembly-ai';
@@ -14,12 +17,16 @@ export interface AssemblyAITranscriber {
14
17
  * Set to `true` to not receive partial transcripts. Defaults to `false`.
15
18
  */
16
19
  disablePartialTranscripts?: boolean;
20
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
21
+ fallbackPlan?: FallbackTranscriberPlan;
17
22
  }
18
23
  export interface AzureSpeechTranscriber {
19
24
  /** This is the transcription provider that will be used. */
20
25
  provider: 'azure';
21
26
  /** This is the language that will be set for the transcription. The list of languages Azure supports can be found here: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-support?tabs=stt */
22
27
  language?: 'af-ZA' | 'am-ET' | 'ar-AE' | 'ar-BH' | 'ar-DZ' | 'ar-EG' | 'ar-IL' | 'ar-IQ' | 'ar-JO' | 'ar-KW' | 'ar-LB' | 'ar-LY' | 'ar-MA' | 'ar-OM' | 'ar-PS' | 'ar-QA' | 'ar-SA' | 'ar-SY' | 'ar-TN' | 'ar-YE' | 'az-AZ' | 'bg-BG' | 'bn-IN' | 'bs-BA' | 'ca-ES' | 'cs-CZ' | 'cy-GB' | 'da-DK' | 'de-AT' | 'de-CH' | 'de-DE' | 'el-GR' | 'en-AU' | 'en-CA' | 'en-GB' | 'en-GH' | 'en-HK' | 'en-IE' | 'en-IN' | 'en-KE' | 'en-NG' | 'en-NZ' | 'en-PH' | 'en-SG' | 'en-TZ' | 'en-US' | 'en-ZA' | 'es-AR' | 'es-BO' | 'es-CL' | 'es-CO' | 'es-CR' | 'es-CU' | 'es-DO' | 'es-EC' | 'es-ES' | 'es-GQ' | 'es-GT' | 'es-HN' | 'es-MX' | 'es-NI' | 'es-PA' | 'es-PE' | 'es-PR' | 'es-PY' | 'es-SV' | 'es-US' | 'es-UY' | 'es-VE' | 'et-EE' | 'eu-ES' | 'fa-IR' | 'fi-FI' | 'fil-PH' | 'fr-BE' | 'fr-CA' | 'fr-CH' | 'fr-FR' | 'ga-IE' | 'gl-ES' | 'gu-IN' | 'he-IL' | 'hi-IN' | 'hr-HR' | 'hu-HU' | 'hy-AM' | 'id-ID' | 'is-IS' | 'it-CH' | 'it-IT' | 'ja-JP' | 'jv-ID' | 'ka-GE' | 'kk-KZ' | 'km-KH' | 'kn-IN' | 'ko-KR' | 'lo-LA' | 'lt-LT' | 'lv-LV' | 'mk-MK' | 'ml-IN' | 'mn-MN' | 'mr-IN' | 'ms-MY' | 'mt-MT' | 'my-MM' | 'nb-NO' | 'ne-NP' | 'nl-BE' | 'nl-NL' | 'pa-IN' | 'pl-PL' | 'ps-AF' | 'pt-BR' | 'pt-PT' | 'ro-RO' | 'ru-RU' | 'si-LK' | 'sk-SK' | 'sl-SI' | 'so-SO' | 'sq-AL' | 'sr-RS' | 'sv-SE' | 'sw-KE' | 'sw-TZ' | 'ta-IN' | 'te-IN' | 'th-TH' | 'tr-TR' | 'uk-UA' | 'ur-IN' | 'uz-UZ' | 'vi-VN' | 'wuu-CN' | 'yue-CN' | 'zh-CN' | 'zh-CN-shandong' | 'zh-CN-sichuan' | 'zh-HK' | 'zh-TW' | 'zu-ZA';
28
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
29
+ fallbackPlan?: FallbackTranscriberPlan;
23
30
  }
24
31
  export interface BackoffPlan {
25
32
  /**
@@ -117,6 +124,8 @@ export interface CustomTranscriber {
117
124
  * ```
118
125
  */
119
126
  server: Server;
127
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
128
+ fallbackPlan?: FallbackTranscriberPlan;
120
129
  }
121
130
  export interface DeepgramTranscriber {
122
131
  /** This is the transcription provider that will be used. */
@@ -199,6 +208,8 @@ export interface DeepgramTranscriber {
199
208
  * @max 500
200
209
  */
201
210
  endpointing?: number;
211
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
212
+ fallbackPlan?: FallbackTranscriberPlan;
202
213
  }
203
214
  export interface ElevenLabsTranscriber {
204
215
  /** This is the transcription provider that will be used. */
@@ -206,6 +217,8 @@ export interface ElevenLabsTranscriber {
206
217
  /** This is the model that will be used for the transcription. */
207
218
  model?: 'scribe_v1';
208
219
  language?: 'aa' | 'ab' | 'ae' | 'af' | 'ak' | 'am' | 'an' | 'ar' | 'as' | 'av' | 'ay' | 'az' | 'ba' | 'be' | 'bg' | 'bh' | 'bi' | 'bm' | 'bn' | 'bo' | 'br' | 'bs' | 'ca' | 'ce' | 'ch' | 'co' | 'cr' | 'cs' | 'cu' | 'cv' | 'cy' | 'da' | 'de' | 'dv' | 'dz' | 'ee' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'ff' | 'fi' | 'fj' | 'fo' | 'fr' | 'fy' | 'ga' | 'gd' | 'gl' | 'gn' | 'gu' | 'gv' | 'ha' | 'he' | 'hi' | 'ho' | 'hr' | 'ht' | 'hu' | 'hy' | 'hz' | 'ia' | 'id' | 'ie' | 'ig' | 'ii' | 'ik' | 'io' | 'is' | 'it' | 'iu' | 'ja' | 'jv' | 'ka' | 'kg' | 'ki' | 'kj' | 'kk' | 'kl' | 'km' | 'kn' | 'ko' | 'kr' | 'ks' | 'ku' | 'kv' | 'kw' | 'ky' | 'la' | 'lb' | 'lg' | 'li' | 'ln' | 'lo' | 'lt' | 'lu' | 'lv' | 'mg' | 'mh' | 'mi' | 'mk' | 'ml' | 'mn' | 'mr' | 'ms' | 'mt' | 'my' | 'na' | 'nb' | 'nd' | 'ne' | 'ng' | 'nl' | 'nn' | 'no' | 'nr' | 'nv' | 'ny' | 'oc' | 'oj' | 'om' | 'or' | 'os' | 'pa' | 'pi' | 'pl' | 'ps' | 'pt' | 'qu' | 'rm' | 'rn' | 'ro' | 'ru' | 'rw' | 'sa' | 'sc' | 'sd' | 'se' | 'sg' | 'si' | 'sk' | 'sl' | 'sm' | 'sn' | 'so' | 'sq' | 'sr' | 'ss' | 'st' | 'su' | 'sv' | 'sw' | 'ta' | 'te' | 'tg' | 'th' | 'ti' | 'tk' | 'tl' | 'tn' | 'to' | 'tr' | 'ts' | 'tt' | 'tw' | 'ty' | 'ug' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'vo' | 'wa' | 'wo' | 'xh' | 'yi' | 'yue' | 'yo' | 'za' | 'zh' | 'zu';
220
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
221
+ fallbackPlan?: FallbackTranscriberPlan;
209
222
  }
210
223
  export interface GladiaTranscriber {
211
224
  /** This is the transcription provider that will be used. */
@@ -233,6 +246,8 @@ export interface GladiaTranscriber {
233
246
  * @example false
234
247
  */
235
248
  audioEnhancer?: boolean;
249
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
250
+ fallbackPlan?: FallbackTranscriberPlan;
236
251
  }
237
252
  export interface SpeechmaticsTranscriber {
238
253
  /** This is the transcription provider that will be used. */
@@ -240,6 +255,8 @@ export interface SpeechmaticsTranscriber {
240
255
  /** This is the model that will be used for the transcription. */
241
256
  model?: 'default';
242
257
  language?: 'auto' | 'ar' | 'ba' | 'eu' | 'be' | 'bn' | 'bg' | 'yue' | 'ca' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'eo' | 'et' | 'fi' | 'fr' | 'gl' | 'de' | 'el' | 'he' | 'hi' | 'hu' | 'id' | 'ia' | 'ga' | 'it' | 'ja' | 'ko' | 'lv' | 'lt' | 'ms' | 'mt' | 'cmn' | 'mr' | 'mn' | 'no' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk' | 'sl' | 'es' | 'sw' | 'sv' | 'ta' | 'th' | 'tr' | 'uk' | 'ur' | 'ug' | 'vi' | 'cy';
258
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
259
+ fallbackPlan?: FallbackTranscriberPlan;
243
260
  }
244
261
  export interface TalkscriberTranscriber {
245
262
  /** This is the transcription provider that will be used. */
@@ -248,10 +265,253 @@ export interface TalkscriberTranscriber {
248
265
  model?: 'whisper';
249
266
  /** This is the language that will be set for the transcription. The list of languages Whisper supports can be found here: https://github.com/openai/whisper/blob/main/whisper/tokenizer.py */
250
267
  language?: 'en' | 'zh' | 'de' | 'es' | 'ru' | 'ko' | 'fr' | 'ja' | 'pt' | 'tr' | 'pl' | 'ca' | 'nl' | 'ar' | 'sv' | 'it' | 'id' | 'hi' | 'fi' | 'vi' | 'he' | 'uk' | 'el' | 'ms' | 'cs' | 'ro' | 'da' | 'hu' | 'ta' | 'no' | 'th' | 'ur' | 'hr' | 'bg' | 'lt' | 'la' | 'mi' | 'ml' | 'cy' | 'sk' | 'te' | 'fa' | 'lv' | 'bn' | 'sr' | 'az' | 'sl' | 'kn' | 'et' | 'mk' | 'br' | 'eu' | 'is' | 'hy' | 'ne' | 'mn' | 'bs' | 'kk' | 'sq' | 'sw' | 'gl' | 'mr' | 'pa' | 'si' | 'km' | 'sn' | 'yo' | 'so' | 'af' | 'oc' | 'ka' | 'be' | 'tg' | 'sd' | 'gu' | 'am' | 'yi' | 'lo' | 'uz' | 'fo' | 'ht' | 'ps' | 'tk' | 'nn' | 'mt' | 'sa' | 'lb' | 'my' | 'bo' | 'tl' | 'mg' | 'as' | 'tt' | 'haw' | 'ln' | 'ha' | 'ba' | 'jw' | 'su' | 'yue';
268
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
269
+ fallbackPlan?: FallbackTranscriberPlan;
270
+ }
271
+ export interface GoogleTranscriber {
272
+ /** This is the transcription provider that will be used. */
273
+ provider: 'google';
274
+ /** This is the model that will be used for the transcription. */
275
+ 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';
276
+ /** This is the language that will be set for the transcription. */
277
+ language?: 'Multilingual' | 'Arabic' | 'Bengali' | 'Bulgarian' | 'Chinese' | 'Croatian' | 'Czech' | 'Danish' | 'Dutch' | 'English' | 'Estonian' | 'Finnish' | 'French' | 'German' | 'Greek' | 'Hebrew' | 'Hindi' | 'Hungarian' | 'Indonesian' | 'Italian' | 'Japanese' | 'Korean' | 'Latvian' | 'Lithuanian' | 'Norwegian' | 'Polish' | 'Portuguese' | 'Romanian' | 'Russian' | 'Serbian' | 'Slovak' | 'Slovenian' | 'Spanish' | 'Swahili' | 'Swedish' | 'Thai' | 'Turkish' | 'Ukrainian' | 'Vietnamese';
278
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
279
+ fallbackPlan?: FallbackTranscriberPlan;
280
+ }
281
+ export interface OpenAITranscriber {
282
+ /** This is the transcription provider that will be used. */
283
+ provider: 'openai';
284
+ /** This is the model that will be used for the transcription. */
285
+ model: 'gpt-4o-transcribe' | 'gpt-4o-mini-transcribe';
286
+ /** This is the language that will be set for the transcription. */
287
+ language?: 'af' | 'ar' | 'hy' | 'az' | 'be' | 'bs' | 'bg' | 'ca' | 'zh' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'et' | 'fi' | 'fr' | 'gl' | 'de' | 'el' | 'he' | 'hi' | 'hu' | 'is' | 'id' | 'it' | 'ja' | 'kn' | 'kk' | 'ko' | 'lv' | 'lt' | 'mk' | 'ms' | 'mr' | 'mi' | 'ne' | 'no' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sr' | 'sk' | 'sl' | 'es' | 'sw' | 'sv' | 'tl' | 'ta' | 'th' | 'tr' | 'uk' | 'ur' | 'vi' | 'cy';
288
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
289
+ fallbackPlan?: FallbackTranscriberPlan;
290
+ }
291
+ export interface FallbackAssemblyAITranscriber {
292
+ /** This is the transcription provider that will be used. */
293
+ provider: 'assembly-ai';
294
+ /** This is the language that will be set for the transcription. */
295
+ language?: 'en';
296
+ /** The WebSocket URL that the transcriber connects to. */
297
+ realtimeUrl?: string;
298
+ /** Add up to 2500 characters of custom vocabulary. */
299
+ wordBoost?: string[];
300
+ /** The duration of the end utterance silence threshold in milliseconds. */
301
+ endUtteranceSilenceThreshold?: number;
302
+ /**
303
+ * Disable partial transcripts.
304
+ * Set to `true` to not receive partial transcripts. Defaults to `false`.
305
+ */
306
+ disablePartialTranscripts?: boolean;
307
+ }
308
+ export interface FallbackAzureSpeechTranscriber {
309
+ /** This is the transcription provider that will be used. */
310
+ provider: 'azure';
311
+ /** This is the language that will be set for the transcription. The list of languages Azure supports can be found here: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-support?tabs=stt */
312
+ language?: 'af-ZA' | 'am-ET' | 'ar-AE' | 'ar-BH' | 'ar-DZ' | 'ar-EG' | 'ar-IL' | 'ar-IQ' | 'ar-JO' | 'ar-KW' | 'ar-LB' | 'ar-LY' | 'ar-MA' | 'ar-OM' | 'ar-PS' | 'ar-QA' | 'ar-SA' | 'ar-SY' | 'ar-TN' | 'ar-YE' | 'az-AZ' | 'bg-BG' | 'bn-IN' | 'bs-BA' | 'ca-ES' | 'cs-CZ' | 'cy-GB' | 'da-DK' | 'de-AT' | 'de-CH' | 'de-DE' | 'el-GR' | 'en-AU' | 'en-CA' | 'en-GB' | 'en-GH' | 'en-HK' | 'en-IE' | 'en-IN' | 'en-KE' | 'en-NG' | 'en-NZ' | 'en-PH' | 'en-SG' | 'en-TZ' | 'en-US' | 'en-ZA' | 'es-AR' | 'es-BO' | 'es-CL' | 'es-CO' | 'es-CR' | 'es-CU' | 'es-DO' | 'es-EC' | 'es-ES' | 'es-GQ' | 'es-GT' | 'es-HN' | 'es-MX' | 'es-NI' | 'es-PA' | 'es-PE' | 'es-PR' | 'es-PY' | 'es-SV' | 'es-US' | 'es-UY' | 'es-VE' | 'et-EE' | 'eu-ES' | 'fa-IR' | 'fi-FI' | 'fil-PH' | 'fr-BE' | 'fr-CA' | 'fr-CH' | 'fr-FR' | 'ga-IE' | 'gl-ES' | 'gu-IN' | 'he-IL' | 'hi-IN' | 'hr-HR' | 'hu-HU' | 'hy-AM' | 'id-ID' | 'is-IS' | 'it-CH' | 'it-IT' | 'ja-JP' | 'jv-ID' | 'ka-GE' | 'kk-KZ' | 'km-KH' | 'kn-IN' | 'ko-KR' | 'lo-LA' | 'lt-LT' | 'lv-LV' | 'mk-MK' | 'ml-IN' | 'mn-MN' | 'mr-IN' | 'ms-MY' | 'mt-MT' | 'my-MM' | 'nb-NO' | 'ne-NP' | 'nl-BE' | 'nl-NL' | 'pa-IN' | 'pl-PL' | 'ps-AF' | 'pt-BR' | 'pt-PT' | 'ro-RO' | 'ru-RU' | 'si-LK' | 'sk-SK' | 'sl-SI' | 'so-SO' | 'sq-AL' | 'sr-RS' | 'sv-SE' | 'sw-KE' | 'sw-TZ' | 'ta-IN' | 'te-IN' | 'th-TH' | 'tr-TR' | 'uk-UA' | 'ur-IN' | 'uz-UZ' | 'vi-VN' | 'wuu-CN' | 'yue-CN' | 'zh-CN' | 'zh-CN-shandong' | 'zh-CN-sichuan' | 'zh-HK' | 'zh-TW' | 'zu-ZA';
313
+ }
314
+ export interface FallbackCustomTranscriber {
315
+ /** This is the transcription provider that will be used. Use `custom-transcriber` for providers that are not natively supported. */
316
+ provider: 'custom-transcriber';
317
+ /**
318
+ * This is where the transcription request will be sent.
319
+ *
320
+ * Usage:
321
+ * 1. Vapi will initiate a websocket connection with `server.url`.
322
+ *
323
+ * 2. Vapi will send an initial text frame with the sample rate. Format:
324
+ * ```
325
+ * {
326
+ * "type": "start",
327
+ * "encoding": "linear16", // 16-bit raw PCM format
328
+ * "container": "raw",
329
+ * "sampleRate": {{sampleRate}},
330
+ * "channels": 2 // customer is channel 0, assistant is channel 1
331
+ * }
332
+ * ```
333
+ *
334
+ * 3. Vapi will send the audio data in 16-bit raw PCM format as binary frames.
335
+ *
336
+ * 4. You can read the messages something like this:
337
+ * ```
338
+ * ws.on('message', (data, isBinary) => {
339
+ * if (isBinary) {
340
+ * pcmBuffer = Buffer.concat([pcmBuffer, data]);
341
+ * console.log(`Received PCM data, buffer size: ${pcmBuffer.length}`);
342
+ * } else {
343
+ * console.log('Received message:', JSON.parse(data.toString()));
344
+ * }
345
+ * });
346
+ * ```
347
+ *
348
+ * 5. You will respond with transcriptions as you have them. Format:
349
+ * ```
350
+ * {
351
+ * "type": "transcriber-response",
352
+ * "transcription": "Hello, world!",
353
+ * "channel": "customer" | "assistant"
354
+ * }
355
+ * ```
356
+ */
357
+ server: Server;
358
+ }
359
+ export interface FallbackDeepgramTranscriber {
360
+ /** This is the transcription provider that will be used. */
361
+ provider: 'deepgram';
362
+ /** 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;
364
+ /** 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';
366
+ /**
367
+ * 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
+ * @example false
369
+ */
370
+ smartFormat?: boolean;
371
+ /**
372
+ * This automatically switches the transcriber's language when the customer's language changes. Defaults to false.
373
+ *
374
+ * Usage:
375
+ * - If your customers switch languages mid-call, you can set this to true.
376
+ *
377
+ * Note:
378
+ * - To detect language changes, Vapi uses a custom trained model. Languages supported (X = limited support):
379
+ * 1. Arabic
380
+ * 2. Bengali
381
+ * 3. Cantonese
382
+ * 4. Chinese
383
+ * 5. Chinese Simplified (X)
384
+ * 6. Chinese Traditional (X)
385
+ * 7. English
386
+ * 8. Farsi (X)
387
+ * 9. French
388
+ * 10. German
389
+ * 11. Haitian Creole (X)
390
+ * 12. Hindi
391
+ * 13. Italian
392
+ * 14. Japanese
393
+ * 15. Korean
394
+ * 16. Portuguese
395
+ * 17. Russian
396
+ * 18. Spanish
397
+ * 19. Thai
398
+ * 20. Urdu
399
+ * 21. Vietnamese
400
+ * - To receive `language-change-detected` webhook events, add it to `assistant.serverMessages`.
401
+ *
402
+ * @default false
403
+ * @example false
404
+ */
405
+ codeSwitchingEnabled?: boolean;
406
+ /**
407
+ * 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
408
+ *
409
+ * This will only be used if you are using your own Deepgram API key.
410
+ *
411
+ * @default false
412
+ * @default false
413
+ * @example false
414
+ */
415
+ mipOptOut?: boolean;
416
+ /**
417
+ * If set to true, this will cause deepgram to convert spoken numbers to literal numerals. For example, "my phone number is nine-seven-two..." would become "my phone number is 972..."
418
+ *
419
+ * @default false
420
+ * @example false
421
+ */
422
+ numerals?: boolean;
423
+ /** 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
+ keywords?: string[];
425
+ /** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
426
+ keyterm?: string[];
427
+ /**
428
+ * This is the timeout after which Deepgram will send transcription on user silence. You can read in-depth documentation here: https://developers.deepgram.com/docs/endpointing.
429
+ *
430
+ * Here are the most important bits:
431
+ * - Defaults to 10. This is recommended for most use cases to optimize for latency.
432
+ * - 10 can cause some missing transcriptions since because of the shorter context. This mostly happens for one-word utterances. For those uses cases, it's recommended to try 300. It will add a bit of latency but the quality and reliability of the experience will be better.
433
+ * - If neither 10 nor 300 work, contact support@vapi.ai and we'll find another solution.
434
+ *
435
+ * @default 10
436
+ * @min 10
437
+ * @max 500
438
+ */
439
+ endpointing?: number;
440
+ }
441
+ export interface FallbackElevenLabsTranscriber {
442
+ /** This is the transcription provider that will be used. */
443
+ provider: '11labs';
444
+ /** This is the model that will be used for the transcription. */
445
+ model?: 'scribe_v1';
446
+ language?: 'aa' | 'ab' | 'ae' | 'af' | 'ak' | 'am' | 'an' | 'ar' | 'as' | 'av' | 'ay' | 'az' | 'ba' | 'be' | 'bg' | 'bh' | 'bi' | 'bm' | 'bn' | 'bo' | 'br' | 'bs' | 'ca' | 'ce' | 'ch' | 'co' | 'cr' | 'cs' | 'cu' | 'cv' | 'cy' | 'da' | 'de' | 'dv' | 'dz' | 'ee' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'ff' | 'fi' | 'fj' | 'fo' | 'fr' | 'fy' | 'ga' | 'gd' | 'gl' | 'gn' | 'gu' | 'gv' | 'ha' | 'he' | 'hi' | 'ho' | 'hr' | 'ht' | 'hu' | 'hy' | 'hz' | 'ia' | 'id' | 'ie' | 'ig' | 'ii' | 'ik' | 'io' | 'is' | 'it' | 'iu' | 'ja' | 'jv' | 'ka' | 'kg' | 'ki' | 'kj' | 'kk' | 'kl' | 'km' | 'kn' | 'ko' | 'kr' | 'ks' | 'ku' | 'kv' | 'kw' | 'ky' | 'la' | 'lb' | 'lg' | 'li' | 'ln' | 'lo' | 'lt' | 'lu' | 'lv' | 'mg' | 'mh' | 'mi' | 'mk' | 'ml' | 'mn' | 'mr' | 'ms' | 'mt' | 'my' | 'na' | 'nb' | 'nd' | 'ne' | 'ng' | 'nl' | 'nn' | 'no' | 'nr' | 'nv' | 'ny' | 'oc' | 'oj' | 'om' | 'or' | 'os' | 'pa' | 'pi' | 'pl' | 'ps' | 'pt' | 'qu' | 'rm' | 'rn' | 'ro' | 'ru' | 'rw' | 'sa' | 'sc' | 'sd' | 'se' | 'sg' | 'si' | 'sk' | 'sl' | 'sm' | 'sn' | 'so' | 'sq' | 'sr' | 'ss' | 'st' | 'su' | 'sv' | 'sw' | 'ta' | 'te' | 'tg' | 'th' | 'ti' | 'tk' | 'tl' | 'tn' | 'to' | 'tr' | 'ts' | 'tt' | 'tw' | 'ty' | 'ug' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'vo' | 'wa' | 'wo' | 'xh' | 'yi' | 'yue' | 'yo' | 'za' | 'zh' | 'zu';
447
+ }
448
+ export interface FallbackGladiaTranscriber {
449
+ /** This is the transcription provider that will be used. */
450
+ provider: 'gladia';
451
+ /** This is the Gladia model that will be used. Default is 'fast' */
452
+ model?: 'fast' | 'accurate';
453
+ /** Defines how the transcription model detects the audio language. Default value is 'automatic single language'. */
454
+ languageBehaviour?: 'manual' | 'automatic single language' | 'automatic multiple languages';
455
+ /** Defines the language to use for the transcription. Required when languageBehaviour is 'manual'. */
456
+ language?: 'af' | 'sq' | 'am' | 'ar' | 'hy' | 'as' | 'az' | 'ba' | 'eu' | 'be' | 'bn' | 'bs' | 'br' | 'bg' | 'ca' | 'zh' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'et' | 'fo' | 'fi' | 'fr' | 'gl' | 'ka' | 'de' | 'el' | 'gu' | 'ht' | 'ha' | 'haw' | 'he' | 'hi' | 'hu' | 'is' | 'id' | 'it' | 'ja' | 'jv' | 'kn' | 'kk' | 'km' | 'ko' | 'lo' | 'la' | 'lv' | 'ln' | 'lt' | 'lb' | 'mk' | 'mg' | 'ms' | 'ml' | 'mt' | 'mi' | 'mr' | 'mn' | 'my' | 'ne' | 'no' | 'nn' | 'oc' | 'ps' | 'fa' | 'pl' | 'pt' | 'pa' | 'ro' | 'ru' | 'sa' | 'sr' | 'sn' | 'sd' | 'si' | 'sk' | 'sl' | 'so' | 'es' | 'su' | 'sw' | 'sv' | 'tl' | 'tg' | 'ta' | 'tt' | 'te' | 'th' | 'bo' | 'tr' | 'tk' | 'uk' | 'ur' | 'uz' | 'vi' | 'cy' | 'yi' | 'yo';
457
+ /**
458
+ * Provides a custom vocabulary to the model to improve accuracy of transcribing context specific words, technical terms, names, etc. If empty, this argument is ignored.
459
+ * ⚠️ Warning ⚠️: Please be aware that the transcription_hint field has a character limit of 600. If you provide a transcription_hint longer than 600 characters, it will be automatically truncated to meet this limit.
460
+ * @maxLength 600
461
+ * @example "custom vocabulary"
462
+ */
463
+ transcriptionHint?: string;
464
+ /**
465
+ * If prosody is true, you will get a transcription that can contain prosodies i.e. (laugh) (giggles) (malefic laugh) (toss) (music)… Default value is false.
466
+ * @example false
467
+ */
468
+ prosody?: boolean;
469
+ /**
470
+ * If true, audio will be pre-processed to improve accuracy but latency will increase. Default value is false.
471
+ * @example false
472
+ */
473
+ audioEnhancer?: boolean;
474
+ }
475
+ export interface FallbackSpeechmaticsTranscriber {
476
+ /** This is the transcription provider that will be used. */
477
+ provider: 'speechmatics';
478
+ /** This is the model that will be used for the transcription. */
479
+ model?: 'default';
480
+ language?: 'auto' | 'ar' | 'ba' | 'eu' | 'be' | 'bn' | 'bg' | 'yue' | 'ca' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'eo' | 'et' | 'fi' | 'fr' | 'gl' | 'de' | 'el' | 'he' | 'hi' | 'hu' | 'id' | 'ia' | 'ga' | 'it' | 'ja' | 'ko' | 'lv' | 'lt' | 'ms' | 'mt' | 'cmn' | 'mr' | 'mn' | 'no' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk' | 'sl' | 'es' | 'sw' | 'sv' | 'ta' | 'th' | 'tr' | 'uk' | 'ur' | 'ug' | 'vi' | 'cy';
481
+ }
482
+ export interface FallbackTalkscriberTranscriber {
483
+ /** This is the transcription provider that will be used. */
484
+ provider: 'talkscriber';
485
+ /** This is the model that will be used for the transcription. */
486
+ model?: 'whisper';
487
+ /** This is the language that will be set for the transcription. The list of languages Whisper supports can be found here: https://github.com/openai/whisper/blob/main/whisper/tokenizer.py */
488
+ language?: 'en' | 'zh' | 'de' | 'es' | 'ru' | 'ko' | 'fr' | 'ja' | 'pt' | 'tr' | 'pl' | 'ca' | 'nl' | 'ar' | 'sv' | 'it' | 'id' | 'hi' | 'fi' | 'vi' | 'he' | 'uk' | 'el' | 'ms' | 'cs' | 'ro' | 'da' | 'hu' | 'ta' | 'no' | 'th' | 'ur' | 'hr' | 'bg' | 'lt' | 'la' | 'mi' | 'ml' | 'cy' | 'sk' | 'te' | 'fa' | 'lv' | 'bn' | 'sr' | 'az' | 'sl' | 'kn' | 'et' | 'mk' | 'br' | 'eu' | 'is' | 'hy' | 'ne' | 'mn' | 'bs' | 'kk' | 'sq' | 'sw' | 'gl' | 'mr' | 'pa' | 'si' | 'km' | 'sn' | 'yo' | 'so' | 'af' | 'oc' | 'ka' | 'be' | 'tg' | 'sd' | 'gu' | 'am' | 'yi' | 'lo' | 'uz' | 'fo' | 'ht' | 'ps' | 'tk' | 'nn' | 'mt' | 'sa' | 'lb' | 'my' | 'bo' | 'tl' | 'mg' | 'as' | 'tt' | 'haw' | 'ln' | 'ha' | 'ba' | 'jw' | 'su' | 'yue';
489
+ }
490
+ export interface FallbackGoogleTranscriber {
491
+ /** This is the transcription provider that will be used. */
492
+ provider: 'google';
493
+ /** This is the model that will be used for the transcription. */
494
+ 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';
495
+ /** This is the language that will be set for the transcription. */
496
+ language?: 'Multilingual' | 'Arabic' | 'Bengali' | 'Bulgarian' | 'Chinese' | 'Croatian' | 'Czech' | 'Danish' | 'Dutch' | 'English' | 'Estonian' | 'Finnish' | 'French' | 'German' | 'Greek' | 'Hebrew' | 'Hindi' | 'Hungarian' | 'Indonesian' | 'Italian' | 'Japanese' | 'Korean' | 'Latvian' | 'Lithuanian' | 'Norwegian' | 'Polish' | 'Portuguese' | 'Romanian' | 'Russian' | 'Serbian' | 'Slovak' | 'Slovenian' | 'Spanish' | 'Swahili' | 'Swedish' | 'Thai' | 'Turkish' | 'Ukrainian' | 'Vietnamese';
497
+ }
498
+ export interface FallbackOpenAITranscriber {
499
+ /** This is the transcription provider that will be used. */
500
+ provider: 'openai';
501
+ /** This is the model that will be used for the transcription. */
502
+ model: 'gpt-4o-transcribe' | 'gpt-4o-mini-transcribe';
503
+ /** This is the language that will be set for the transcription. */
504
+ language?: 'af' | 'ar' | 'hy' | 'az' | 'be' | 'bs' | 'bg' | 'ca' | 'zh' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'et' | 'fi' | 'fr' | 'gl' | 'de' | 'el' | 'he' | 'hi' | 'hu' | 'is' | 'id' | 'it' | 'ja' | 'kn' | 'kk' | 'ko' | 'lv' | 'lt' | 'mk' | 'ms' | 'mr' | 'mi' | 'ne' | 'no' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sr' | 'sk' | 'sl' | 'es' | 'sw' | 'sv' | 'tl' | 'ta' | 'th' | 'tr' | 'uk' | 'ur' | 'vi' | 'cy';
251
505
  }
252
506
  export interface LangfuseObservabilityPlan {
253
507
  provider: 'langfuse';
508
+ /** This is an array of tags to be added to the Langfuse trace. Tags allow you to categorize and filter traces. https://langfuse.com/docs/tracing-features/tags */
254
509
  tags: string[];
510
+ /**
511
+ * This is a JSON object that will be added to the Langfuse trace. Traces can be enriched with metadata to better understand your users, application, and experiments. https://langfuse.com/docs/tracing-features/metadata
512
+ * By default it includes the call metadata, assistant metadata, and assistant overrides.
513
+ */
514
+ metadata?: object;
255
515
  }
256
516
  export interface TextContent {
257
517
  type: 'text';
@@ -1178,7 +1438,7 @@ export interface AnyscaleModel {
1178
1438
  *
1179
1439
  * Both `tools` and `toolIds` can be used together.
1180
1440
  */
1181
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1441
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1182
1442
  /**
1183
1443
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1184
1444
  *
@@ -1240,7 +1500,7 @@ export interface AnthropicModel {
1240
1500
  *
1241
1501
  * Both `tools` and `toolIds` can be used together.
1242
1502
  */
1243
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1503
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1244
1504
  /**
1245
1505
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1246
1506
  *
@@ -1299,7 +1559,7 @@ export interface CerebrasModel {
1299
1559
  *
1300
1560
  * Both `tools` and `toolIds` can be used together.
1301
1561
  */
1302
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1562
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1303
1563
  /**
1304
1564
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1305
1565
  *
@@ -1351,7 +1611,7 @@ export interface CustomLLMModel {
1351
1611
  *
1352
1612
  * Both `tools` and `toolIds` can be used together.
1353
1613
  */
1354
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1614
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1355
1615
  /**
1356
1616
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1357
1617
  *
@@ -1378,6 +1638,12 @@ export interface CustomLLMModel {
1378
1638
  metadataSendMode?: 'off' | 'variable' | 'destructured';
1379
1639
  /** These is the URL we'll use for the OpenAI client's `baseURL`. Ex. https://openrouter.ai/api/v1 */
1380
1640
  url: string;
1641
+ /**
1642
+ * This sets the timeout for the connection to the custom provider without needing to stream any tokens back. Default is 20 seconds.
1643
+ * @min 20
1644
+ * @max 600
1645
+ */
1646
+ timeoutSeconds?: number;
1381
1647
  /** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
1382
1648
  model: string;
1383
1649
  /**
@@ -1418,7 +1684,7 @@ export interface DeepInfraModel {
1418
1684
  *
1419
1685
  * Both `tools` and `toolIds` can be used together.
1420
1686
  */
1421
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1687
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1422
1688
  /**
1423
1689
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1424
1690
  *
@@ -1470,7 +1736,7 @@ export interface DeepSeekModel {
1470
1736
  *
1471
1737
  * Both `tools` and `toolIds` can be used together.
1472
1738
  */
1473
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1739
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1474
1740
  /**
1475
1741
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1476
1742
  *
@@ -1558,7 +1824,7 @@ export interface GoogleModel {
1558
1824
  *
1559
1825
  * Both `tools` and `toolIds` can be used together.
1560
1826
  */
1561
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1827
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1562
1828
  /**
1563
1829
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1564
1830
  *
@@ -1615,7 +1881,7 @@ export interface GroqModel {
1615
1881
  *
1616
1882
  * Both `tools` and `toolIds` can be used together.
1617
1883
  */
1618
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1884
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1619
1885
  /**
1620
1886
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1621
1887
  *
@@ -1667,7 +1933,7 @@ export interface InflectionAIModel {
1667
1933
  *
1668
1934
  * Both `tools` and `toolIds` can be used together.
1669
1935
  */
1670
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1936
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1671
1937
  /**
1672
1938
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1673
1939
  *
@@ -1719,7 +1985,7 @@ export interface OpenAIModel {
1719
1985
  *
1720
1986
  * Both `tools` and `toolIds` can be used together.
1721
1987
  */
1722
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
1988
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1723
1989
  /**
1724
1990
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1725
1991
  *
@@ -1777,7 +2043,7 @@ export interface OpenRouterModel {
1777
2043
  *
1778
2044
  * Both `tools` and `toolIds` can be used together.
1779
2045
  */
1780
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
2046
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1781
2047
  /**
1782
2048
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1783
2049
  *
@@ -1829,7 +2095,7 @@ export interface PerplexityAIModel {
1829
2095
  *
1830
2096
  * Both `tools` and `toolIds` can be used together.
1831
2097
  */
1832
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
2098
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1833
2099
  /**
1834
2100
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1835
2101
  *
@@ -1881,7 +2147,7 @@ export interface TogetherAIModel {
1881
2147
  *
1882
2148
  * Both `tools` and `toolIds` can be used together.
1883
2149
  */
1884
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
2150
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1885
2151
  /**
1886
2152
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1887
2153
  *
@@ -1967,7 +2233,7 @@ export interface VapiModel {
1967
2233
  *
1968
2234
  * Both `tools` and `toolIds` can be used together.
1969
2235
  */
1970
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
2236
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1971
2237
  /**
1972
2238
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1973
2239
  *
@@ -2023,7 +2289,7 @@ export interface XaiModel {
2023
2289
  *
2024
2290
  * Both `tools` and `toolIds` can be used together.
2025
2291
  */
2026
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO)[];
2292
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2027
2293
  /**
2028
2294
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2029
2295
  *
@@ -2225,7 +2491,7 @@ export interface ChunkPlan {
2225
2491
  }
2226
2492
  export interface FallbackPlan {
2227
2493
  /** This is the list of voices to fallback to in the event that the primary voice provider fails. */
2228
- voices: (FallbackAzureVoice | FallbackCartesiaVoice | FallbackHumeVoice | FallbackCustomVoice | FallbackDeepgramVoice | FallbackElevenLabsVoice | FallbackVapiVoice | FallbackLMNTVoice | FallbackNeetsVoice | FallbackOpenAIVoice | FallbackPlayHTVoice | FallbackRimeAIVoice | FallbackSmallestAIVoice | FallbackTavusVoice)[];
2494
+ voices: (FallbackAzureVoice | FallbackCartesiaVoice | FallbackHumeVoice | FallbackCustomVoice | FallbackDeepgramVoice | FallbackElevenLabsVoice | FallbackVapiVoice | FallbackLMNTVoice | FallbackOpenAIVoice | FallbackPlayHTVoice | FallbackRimeAIVoice | FallbackSmallestAIVoice | FallbackTavusVoice)[];
2229
2495
  }
2230
2496
  export interface AzureVoice {
2231
2497
  /** This is the voice provider that will be used. */
@@ -2432,16 +2698,6 @@ export interface LMNTVoice {
2432
2698
  /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
2433
2699
  fallbackPlan?: FallbackPlan;
2434
2700
  }
2435
- export interface NeetsVoice {
2436
- /** This is the voice provider that will be used. */
2437
- provider: 'neets';
2438
- /** This is the provider-specific ID that will be used. */
2439
- voiceId: 'vits' | string;
2440
- /** This is the plan for chunking the model output before it is sent to the voice provider. */
2441
- chunkPlan?: ChunkPlan;
2442
- /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
2443
- fallbackPlan?: FallbackPlan;
2444
- }
2445
2701
  export interface NeuphonicVoice {
2446
2702
  /** This is the voice provider that will be used. */
2447
2703
  provider: 'neuphonic';
@@ -2477,6 +2733,14 @@ export interface OpenAIVoice {
2477
2733
  * Please note that ash, ballad, coral, sage, and verse may only be used with realtime models.
2478
2734
  */
2479
2735
  voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | 'ash' | 'ballad' | 'coral' | 'sage' | 'verse';
2736
+ /** This is the model that will be used for text-to-speech. */
2737
+ model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
2738
+ /**
2739
+ * This is a prompt that allows you to control the voice of your generated audio.
2740
+ * Does not work with 'tts-1' or 'tts-1-hd' models.
2741
+ * @maxLength 10000
2742
+ */
2743
+ instructions?: string;
2480
2744
  /**
2481
2745
  * This is the speed multiplier that will be used.
2482
2746
  * @min 0.25
@@ -2559,6 +2823,26 @@ export interface RimeAIVoice {
2559
2823
  * @example null
2560
2824
  */
2561
2825
  speed?: number;
2826
+ /**
2827
+ * This is a flag that controls whether to add slight pauses using angle brackets. Example: “Hi. <200> I’d love to have a conversation with you.” adds a 200ms pause between the first and second sentences.
2828
+ * @example false
2829
+ */
2830
+ pauseBetweenBrackets?: boolean;
2831
+ /**
2832
+ * This is a flag that controls whether text inside brackets should be phonemized (converted to phonetic pronunciation) - Example: "{h'El.o} World" will pronounce "Hello" as expected.
2833
+ * @example false
2834
+ */
2835
+ phonemizeBetweenBrackets?: boolean;
2836
+ /**
2837
+ * This is a flag that controls whether to optimize for reduced latency in streaming. https://docs.rime.ai/api-reference/endpoint/websockets#param-reduce-latency
2838
+ * @example false
2839
+ */
2840
+ reduceLatency?: boolean;
2841
+ /**
2842
+ * This is a string that allows inline speed control using alpha notation. https://docs.rime.ai/api-reference/endpoint/websockets#param-inline-speed-alpha
2843
+ * @example null
2844
+ */
2845
+ inlineSpeedAlpha?: string;
2562
2846
  /** This is the plan for chunking the model output before it is sent to the voice provider. */
2563
2847
  chunkPlan?: ChunkPlan;
2564
2848
  /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
@@ -2647,12 +2931,28 @@ export interface VapiVoice {
2647
2931
  /** This is the voice provider that will be used. */
2648
2932
  provider: 'vapi';
2649
2933
  /** The voices provided by Vapi */
2650
- voiceId: 'Elliot' | 'Rohan' | 'Lily' | 'Savannah' | 'Hana' | 'Neha' | 'Cole' | 'Harry' | 'Paige';
2651
- /** This is the plan for chunking the model output before it is sent to the voice provider. */
2652
- chunkPlan?: ChunkPlan;
2653
- /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
2654
- fallbackPlan?: FallbackPlan;
2655
- }
2934
+ voiceId: 'Elliot' | 'Rohan' | 'Lily' | 'Savannah' | 'Hana' | 'Neha' | 'Cole' | 'Harry' | 'Paige' | 'Spencer';
2935
+ /**
2936
+ * This is the speed multiplier that will be used.
2937
+ *
2938
+ * @default 1
2939
+ * @min 0.25
2940
+ * @max 2
2941
+ * @default 1
2942
+ */
2943
+ speed?: number;
2944
+ /**
2945
+ * This is the language code (ISO 639-1) that will be used.
2946
+ *
2947
+ * @default 'en-US'
2948
+ * @default "en-US"
2949
+ */
2950
+ language?: 'en-US' | 'en-GB' | 'en-AU' | 'en-CA' | 'ja' | 'zh' | 'de' | 'hi' | 'fr-FR' | 'fr-CA' | 'ko' | 'pt-BR' | 'pt-PT' | 'it' | 'es-ES' | 'es-MX' | 'id' | 'nl' | 'tr' | 'fil' | 'pl' | 'sv' | 'bg' | 'ro' | 'ar-SA' | 'ar-AE' | 'cs' | 'el' | 'fi' | 'hr' | 'ms' | 'sk' | 'da' | 'ta' | 'uk' | 'ru' | 'hu' | 'no' | 'vi';
2951
+ /** This is the plan for chunking the model output before it is sent to the voice provider. */
2952
+ chunkPlan?: ChunkPlan;
2953
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
2954
+ fallbackPlan?: FallbackPlan;
2955
+ }
2656
2956
  export interface FallbackAzureVoice {
2657
2957
  /** This is the voice provider that will be used. */
2658
2958
  provider: 'azure';
@@ -2838,14 +3138,6 @@ export interface FallbackLMNTVoice {
2838
3138
  /** This is the plan for chunking the model output before it is sent to the voice provider. */
2839
3139
  chunkPlan?: ChunkPlan;
2840
3140
  }
2841
- export interface FallbackNeetsVoice {
2842
- /** This is the voice provider that will be used. */
2843
- provider: 'neets';
2844
- /** This is the provider-specific ID that will be used. */
2845
- voiceId: 'vits' | string;
2846
- /** This is the plan for chunking the model output before it is sent to the voice provider. */
2847
- chunkPlan?: ChunkPlan;
2848
- }
2849
3141
  export interface FallbackNeuphonicVoice {
2850
3142
  /** This is the voice provider that will be used. */
2851
3143
  provider: 'neuphonic';
@@ -2879,6 +3171,14 @@ export interface FallbackOpenAIVoice {
2879
3171
  * Please note that ash, ballad, coral, sage, and verse may only be used with realtime models.
2880
3172
  */
2881
3173
  voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | 'ash' | 'ballad' | 'coral' | 'sage' | 'verse';
3174
+ /** This is the model that will be used for text-to-speech. */
3175
+ model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
3176
+ /**
3177
+ * This is a prompt that allows you to control the voice of your generated audio.
3178
+ * Does not work with 'tts-1' or 'tts-1-hd' models.
3179
+ * @maxLength 10000
3180
+ */
3181
+ instructions?: string;
2882
3182
  /**
2883
3183
  * This is the speed multiplier that will be used.
2884
3184
  * @min 0.25
@@ -2957,6 +3257,26 @@ export interface FallbackRimeAIVoice {
2957
3257
  * @example null
2958
3258
  */
2959
3259
  speed?: number;
3260
+ /**
3261
+ * This is a flag that controls whether to add slight pauses using angle brackets. Example: “Hi. <200> I’d love to have a conversation with you.” adds a 200ms pause between the first and second sentences.
3262
+ * @example false
3263
+ */
3264
+ pauseBetweenBrackets?: boolean;
3265
+ /**
3266
+ * This is a flag that controls whether text inside brackets should be phonemized (converted to phonetic pronunciation) - Example: "{h'El.o} World" will pronounce "Hello" as expected.
3267
+ * @example false
3268
+ */
3269
+ phonemizeBetweenBrackets?: boolean;
3270
+ /**
3271
+ * This is a flag that controls whether to optimize for reduced latency in streaming. https://docs.rime.ai/api-reference/endpoint/websockets#param-reduce-latency
3272
+ * @example false
3273
+ */
3274
+ reduceLatency?: boolean;
3275
+ /**
3276
+ * This is a string that allows inline speed control using alpha notation. https://docs.rime.ai/api-reference/endpoint/websockets#param-inline-speed-alpha
3277
+ * @example null
3278
+ */
3279
+ inlineSpeedAlpha?: string;
2960
3280
  /** This is the plan for chunking the model output before it is sent to the voice provider. */
2961
3281
  chunkPlan?: ChunkPlan;
2962
3282
  }
@@ -2999,7 +3319,23 @@ export interface FallbackVapiVoice {
2999
3319
  /** This is the voice provider that will be used. */
3000
3320
  provider: 'vapi';
3001
3321
  /** The voices provided by Vapi */
3002
- voiceId: 'Elliot' | 'Rohan' | 'Lily' | 'Savannah' | 'Hana' | 'Neha' | 'Cole' | 'Harry' | 'Paige';
3322
+ voiceId: 'Elliot' | 'Rohan' | 'Lily' | 'Savannah' | 'Hana' | 'Neha' | 'Cole' | 'Harry' | 'Paige' | 'Spencer';
3323
+ /**
3324
+ * This is the speed multiplier that will be used.
3325
+ *
3326
+ * @default 1
3327
+ * @min 0.25
3328
+ * @max 2
3329
+ * @default 1
3330
+ */
3331
+ speed?: number;
3332
+ /**
3333
+ * This is the language code (ISO 639-1) that will be used.
3334
+ *
3335
+ * @default 'en-US'
3336
+ * @default "en-US"
3337
+ */
3338
+ language?: 'en-US' | 'en-GB' | 'en-AU' | 'en-CA' | 'ja' | 'zh' | 'de' | 'hi' | 'fr-FR' | 'fr-CA' | 'ko' | 'pt-BR' | 'pt-PT' | 'it' | 'es-ES' | 'es-MX' | 'id' | 'nl' | 'tr' | 'fil' | 'pl' | 'sv' | 'bg' | 'ro' | 'ar-SA' | 'ar-AE' | 'cs' | 'el' | 'fi' | 'hr' | 'ms' | 'sk' | 'da' | 'ta' | 'uk' | 'ru' | 'hu' | 'no' | 'vi';
3003
3339
  /** This is the plan for chunking the model output before it is sent to the voice provider. */
3004
3340
  chunkPlan?: ChunkPlan;
3005
3341
  }
@@ -3122,7 +3458,7 @@ export interface CreateAzureOpenAICredentialDTO {
3122
3458
  provider: 'azure-openai';
3123
3459
  region: 'australia' | 'canadaeast' | 'canadacentral' | 'eastus2' | 'eastus' | 'france' | 'india' | 'japaneast' | 'japanwest' | 'uaenorth' | 'northcentralus' | 'norway' | 'southcentralus' | 'swedencentral' | 'switzerland' | 'uk' | 'westus' | 'westus3';
3124
3460
  /** @example ["gpt-4-0125-preview","gpt-4-0613"] */
3125
- models: 'gpt-4o-2024-08-06' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-05-13' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4-0613' | 'gpt-35-turbo-0125' | 'gpt-35-turbo-1106';
3461
+ models: 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-05-13' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4-0613' | 'gpt-35-turbo-0125' | 'gpt-35-turbo-1106';
3126
3462
  /**
3127
3463
  * This is not returned in the API.
3128
3464
  * @maxLength 10000
@@ -3740,6 +4076,26 @@ export interface CreateXAiCredentialDTO {
3740
4076
  */
3741
4077
  name?: string;
3742
4078
  }
4079
+ export interface CreateGoogleCalendarOAuth2ClientCredentialDTO {
4080
+ provider: 'google.calendar.oauth2-client';
4081
+ /**
4082
+ * This is the name of credential. This is just for your reference.
4083
+ * @minLength 1
4084
+ * @maxLength 40
4085
+ */
4086
+ name?: string;
4087
+ }
4088
+ export interface CreateGoogleCalendarOAuth2AuthorizationCredentialDTO {
4089
+ provider: 'google.calendar.oauth2-authorization';
4090
+ /** The authorization ID for the OAuth2 authorization */
4091
+ authorizationId: string;
4092
+ /**
4093
+ * This is the name of credential. This is just for your reference.
4094
+ * @minLength 1
4095
+ * @maxLength 40
4096
+ */
4097
+ name?: string;
4098
+ }
3743
4099
  export interface TransferAssistantHookAction {
3744
4100
  /** This is the type of action - must be "transfer" */
3745
4101
  type: 'transfer';
@@ -3755,7 +4111,7 @@ export interface GoogleVoicemailDetectionPlan {
3755
4111
  * @default 15
3756
4112
  * @min 5
3757
4113
  * @max 60
3758
- * @default 15
4114
+ * @default 25
3759
4115
  */
3760
4116
  voicemailExpectedDurationSeconds: number;
3761
4117
  }
@@ -3768,7 +4124,7 @@ export interface OpenAIVoicemailDetectionPlan {
3768
4124
  * @default 15
3769
4125
  * @min 5
3770
4126
  * @max 60
3771
- * @default 15
4127
+ * @default 25
3772
4128
  */
3773
4129
  voicemailExpectedDurationSeconds: number;
3774
4130
  }
@@ -3849,12 +4205,14 @@ export interface TwilioVoicemailDetectionPlan {
3849
4205
  }
3850
4206
  export interface CompliancePlan {
3851
4207
  /**
3852
- * When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
4208
+ * When this is enabled, no logs, recordings, or transcriptions will be stored.
4209
+ * At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
3853
4210
  * @example {"hipaaEnabled":false}
3854
4211
  */
3855
4212
  hipaaEnabled?: boolean;
3856
4213
  /**
3857
- * When this is enabled, the user will be restricted to use PCI-compliant providers, and no logs or transcripts are stored. At the end of the call, you will receive an end-of-call-report message to store on your server. Defaults to false.
4214
+ * When this is enabled, the user will be restricted to use PCI-compliant providers, and no logs or transcripts are stored.
4215
+ * At the end of the call, you will receive an end-of-call-report message to store on your server. Defaults to false.
3858
4216
  * @example {"pciEnabled":false}
3859
4217
  */
3860
4218
  pciEnabled?: boolean;
@@ -3908,6 +4266,12 @@ export interface StructuredDataPlan {
3908
4266
  */
3909
4267
  timeoutSeconds?: number;
3910
4268
  }
4269
+ export interface StructuredDataMultiPlan {
4270
+ /** This is the key of the structured data plan in the catalog. */
4271
+ key: string;
4272
+ /** This is an individual structured data plan in the catalog. */
4273
+ plan: StructuredDataPlan;
4274
+ }
3911
4275
  export interface SuccessEvaluationPlan {
3912
4276
  /**
3913
4277
  * This enforces the rubric of the evaluation. The output is stored in `call.analysis.successEvaluation`.
@@ -3976,6 +4340,8 @@ export interface AnalysisPlan {
3976
4340
  summaryPlan?: SummaryPlan;
3977
4341
  /** This is the plan for generating the structured data from the call. This outputs to `call.analysis.structuredData`. */
3978
4342
  structuredDataPlan?: StructuredDataPlan;
4343
+ /** This is an array of structured data plan catalogs. Each entry includes a `key` and a `plan` for generating the structured data from the call. This outputs to `call.analysis.structuredDataMulti`. */
4344
+ structuredDataMultiPlan?: StructuredDataMultiPlan[];
3979
4345
  /** This is the plan for generating the success evaluation of the call. This outputs to `call.analysis.successEvaluation`. */
3980
4346
  successEvaluationPlan?: SuccessEvaluationPlan;
3981
4347
  }
@@ -4032,6 +4398,12 @@ export interface ArtifactPlan {
4032
4398
  * @example true
4033
4399
  */
4034
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';
4035
4407
  /**
4036
4408
  * This determines whether the video is recorded during the call. Defaults to false. Only relevant for `webCall` type.
4037
4409
  *
@@ -4238,6 +4610,32 @@ export interface BothCustomEndpointingRule {
4238
4610
  */
4239
4611
  timeoutSeconds: number;
4240
4612
  }
4613
+ export interface VapiSmartEndpointingPlan {
4614
+ /**
4615
+ * This is the provider for the smart endpointing plan.
4616
+ * @example "vapi"
4617
+ */
4618
+ provider: 'vapi' | 'livekit';
4619
+ }
4620
+ export interface LivekitSmartEndpointingPlan {
4621
+ /**
4622
+ * This is the provider for the smart endpointing plan.
4623
+ * @example "livekit"
4624
+ */
4625
+ provider: 'vapi' | 'livekit';
4626
+ /**
4627
+ * This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.
4628
+ *
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).
4630
+ *
4631
+ * 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
+ *
4633
+ * 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
+ *
4635
+ * @default "200 + 8000 * x"
4636
+ */
4637
+ waitFunction?: string;
4638
+ }
4241
4639
  export interface TranscriptionEndpointingPlan {
4242
4640
  /**
4243
4641
  * The minimum number of seconds to wait after transcription ending with punctuation before sending a request to the model. Defaults to 0.1.
@@ -4293,19 +4691,17 @@ export interface StartSpeakingPlan {
4293
4691
  */
4294
4692
  waitSeconds?: number;
4295
4693
  /**
4296
- * This determines if a customer speech is considered done (endpointing) using a Vapi custom-trained model on customer's speech. This is good for middle-of-thought detection. Alternatively, you can use LiveKit's smart endpointing model (it only supports English, though)
4297
- *
4298
- * Once an endpoint is triggered, the request is sent to `assistant.model`.
4299
- *
4300
- * Usage:
4301
- * - If your conversations are long-form and you want assistant to wait smartly even if customer pauses for a bit to think, you can use this instead.
4302
- *
4303
- * This overrides `transcriptionEndpointingPlan`.
4304
- *
4305
- * @default false
4694
+ * @deprecated
4306
4695
  * @example false
4307
4696
  */
4308
- smartEndpointingEnabled?: 'true' | 'false' | 'livekit';
4697
+ smartEndpointingEnabled?: object;
4698
+ /**
4699
+ * This is the plan for smart endpointing. Pick between Vapi smart endpointing or LiveKit smart endpointing (or nothing). We strongly recommend using livekit endpointing when working in English. LiveKit endpointing is not supported in other languages, yet.
4700
+ *
4701
+ * If this is set, it will override and take precedence over `transcriptionEndpointingPlan`.
4702
+ * This plan will still be overridden by any matching `customEndpointingRules`.
4703
+ */
4704
+ smartEndpointingPlan?: VapiSmartEndpointingPlan | LivekitSmartEndpointingPlan;
4309
4705
  /**
4310
4706
  * These are the custom endpointing rules to set an endpointing timeout based on a regex on the customer's speech or the assistant's last message.
4311
4707
  *
@@ -4314,10 +4710,15 @@ export interface StartSpeakingPlan {
4314
4710
  * - If you have questions where the customer may pause to look up information like "what's my account number?", you can set a longer timeout.
4315
4711
  * - If you want to wait longer while customer is enumerating a list of numbers, you can set a longer timeout.
4316
4712
  *
4317
- * These override `transcriptionEndpointingPlan` and `smartEndpointingEnabled` when a rule is matched.
4713
+ * These rules have the highest precedence and will override both `smartEndpointingPlan` and `transcriptionEndpointingPlan` when a rule is matched.
4318
4714
  *
4319
4715
  * The rules are evaluated in order and the first one that matches will be used.
4320
4716
  *
4717
+ * Order of precedence for endpointing:
4718
+ * 1. customEndpointingRules (if any match)
4719
+ * 2. smartEndpointingPlan (if set)
4720
+ * 3. transcriptionEndpointingPlan
4721
+ *
4321
4722
  * @default []
4322
4723
  */
4323
4724
  customEndpointingRules?: (AssistantCustomEndpointingRule | CustomerCustomEndpointingRule | BothCustomEndpointingRule)[];
@@ -4325,6 +4726,9 @@ export interface StartSpeakingPlan {
4325
4726
  * This determines how a customer speech is considered done (endpointing) using the transcription of customer's speech.
4326
4727
  *
4327
4728
  * Once an endpoint is triggered, the request is sent to `assistant.model`.
4729
+ *
4730
+ * Note: This plan is only used if `smartEndpointingPlan` is not set. If both are provided, `smartEndpointingPlan` takes precedence.
4731
+ * This plan will also be overridden by any matching `customEndpointingRules`.
4328
4732
  */
4329
4733
  transcriptionEndpointingPlan?: TranscriptionEndpointingPlan;
4330
4734
  }
@@ -4463,14 +4867,14 @@ export interface KeypadInputPlan {
4463
4867
  }
4464
4868
  export interface CreateAssistantDTO {
4465
4869
  /** These are the options for the assistant's transcriber. */
4466
- transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber;
4870
+ transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber | GoogleTranscriber | OpenAITranscriber;
4467
4871
  /** These are the options for the assistant's LLM. */
4468
4872
  model?: AnyscaleModel | AnthropicModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | VapiModel | XaiModel;
4469
4873
  /**
4470
4874
  * These are the options for the assistant's voice.
4471
4875
  * @default {"provider":"playht","voiceId":"jennifer"}
4472
4876
  */
4473
- voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeetsVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
4877
+ voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
4474
4878
  /**
4475
4879
  * This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
4476
4880
  *
@@ -4478,6 +4882,8 @@ export interface CreateAssistantDTO {
4478
4882
  * @example "Hello! How can I help you today?"
4479
4883
  */
4480
4884
  firstMessage?: string;
4885
+ /** @default false */
4886
+ firstMessageInterruptionsEnabled?: boolean;
4481
4887
  /**
4482
4888
  * This is the mode for the first message. Default is 'assistant-speaks-first'.
4483
4889
  *
@@ -4526,9 +4932,10 @@ export interface CreateAssistantDTO {
4526
4932
  maxDurationSeconds?: number;
4527
4933
  /**
4528
4934
  * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
4529
- * @example "office"
4935
+ * You can also provide a custom sound by providing a URL to an audio file.
4936
+ * @maxLength 1000
4530
4937
  */
4531
- backgroundSound?: 'off' | 'office';
4938
+ backgroundSound?: 'off' | 'office' | string;
4532
4939
  /**
4533
4940
  * This enables filtering of noise and background speech while the user is talking.
4534
4941
  *
@@ -4555,7 +4962,7 @@ export interface CreateAssistantDTO {
4555
4962
  */
4556
4963
  observabilityPlan?: LangfuseObservabilityPlan;
4557
4964
  /** 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. */
4558
- 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)[];
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)[];
4559
4966
  /**
4560
4967
  * This is the name of the assistant.
4561
4968
  *
@@ -4644,14 +5051,14 @@ export interface CreateAssistantDTO {
4644
5051
  }
4645
5052
  export interface AssistantOverrides {
4646
5053
  /** These are the options for the assistant's transcriber. */
4647
- transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber;
5054
+ transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber | GoogleTranscriber | OpenAITranscriber;
4648
5055
  /** These are the options for the assistant's LLM. */
4649
5056
  model?: AnyscaleModel | AnthropicModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | VapiModel | XaiModel;
4650
5057
  /**
4651
5058
  * These are the options for the assistant's voice.
4652
5059
  * @default {"provider":"playht","voiceId":"jennifer"}
4653
5060
  */
4654
- voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeetsVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
5061
+ voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
4655
5062
  /**
4656
5063
  * This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
4657
5064
  *
@@ -4659,6 +5066,8 @@ export interface AssistantOverrides {
4659
5066
  * @example "Hello! How can I help you today?"
4660
5067
  */
4661
5068
  firstMessage?: string;
5069
+ /** @default false */
5070
+ firstMessageInterruptionsEnabled?: boolean;
4662
5071
  /**
4663
5072
  * This is the mode for the first message. Default is 'assistant-speaks-first'.
4664
5073
  *
@@ -4707,9 +5116,10 @@ export interface AssistantOverrides {
4707
5116
  maxDurationSeconds?: number;
4708
5117
  /**
4709
5118
  * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
4710
- * @example "office"
5119
+ * You can also provide a custom sound by providing a URL to an audio file.
5120
+ * @maxLength 1000
4711
5121
  */
4712
- backgroundSound?: 'off' | 'office';
5122
+ backgroundSound?: 'off' | 'office' | string;
4713
5123
  /**
4714
5124
  * This enables filtering of noise and background speech while the user is talking.
4715
5125
  *
@@ -4736,7 +5146,7 @@ export interface AssistantOverrides {
4736
5146
  */
4737
5147
  observabilityPlan?: LangfuseObservabilityPlan;
4738
5148
  /** 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. */
4739
- 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)[];
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)[];
4740
5150
  /**
4741
5151
  * These are values that will be used to replace the template variables in the assistant messages and other text-based fields.
4742
5152
  * This uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html
@@ -5034,6 +5444,8 @@ export interface Analysis {
5034
5444
  summary?: string;
5035
5445
  /** This is the structured data extracted from the call. Customize by setting `assistant.analysisPlan.structuredDataPrompt` and/or `assistant.analysisPlan.structuredDataSchema`. */
5036
5446
  structuredData?: object;
5447
+ /** This is the structured data catalog of the call. Customize by setting `assistant.analysisPlan.structuredDataMultiPlan`. */
5448
+ structuredDataMulti?: object[];
5037
5449
  /** This is the evaluation of the call. Customize by setting `assistant.analysisPlan.successEvaluationPrompt` and/or `assistant.analysisPlan.successEvaluationRubric`. */
5038
5450
  successEvaluation?: string;
5039
5451
  }
@@ -5092,7 +5504,7 @@ export interface Call {
5092
5504
  /** This is the status of the call. */
5093
5505
  status?: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
5094
5506
  /** This is the explanation for how the call ended. */
5095
- 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-neets-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-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' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
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';
5096
5508
  /** This is the destination where the call ended up being transferred to. If the call was not transferred, this will be empty. */
5097
5509
  destination?: TransferDestinationNumber | TransferDestinationSip;
5098
5510
  /** This is the unique identifier for the call. */
@@ -5256,7 +5668,7 @@ export interface ChatCompletionMessageMetadata {
5256
5668
  taskState?: object;
5257
5669
  nodeTrace?: string[];
5258
5670
  }
5259
- export interface ChatCompletionMessage {
5671
+ export interface ChatCompletionMessageWorkflows {
5260
5672
  role: object;
5261
5673
  content: string | null;
5262
5674
  metadata?: ChatCompletionMessageMetadata;
@@ -5363,20 +5775,20 @@ export interface CreateWorkflowDTO {
5363
5775
  edges: Edge[];
5364
5776
  }
5365
5777
  export interface ChatCompletionsDTO {
5366
- messages: ChatCompletionMessage[];
5778
+ messages: ChatCompletionMessageWorkflows[];
5367
5779
  workflowId?: string;
5368
5780
  workflow?: CreateWorkflowDTO;
5369
5781
  }
5370
5782
  export interface Assistant {
5371
5783
  /** These are the options for the assistant's transcriber. */
5372
- transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber;
5784
+ transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber | GoogleTranscriber | OpenAITranscriber;
5373
5785
  /** These are the options for the assistant's LLM. */
5374
5786
  model?: AnyscaleModel | AnthropicModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | VapiModel | XaiModel;
5375
5787
  /**
5376
5788
  * These are the options for the assistant's voice.
5377
5789
  * @default {"provider":"playht","voiceId":"jennifer"}
5378
5790
  */
5379
- voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeetsVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
5791
+ voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
5380
5792
  /**
5381
5793
  * This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
5382
5794
  *
@@ -5384,6 +5796,8 @@ export interface Assistant {
5384
5796
  * @example "Hello! How can I help you today?"
5385
5797
  */
5386
5798
  firstMessage?: string;
5799
+ /** @default false */
5800
+ firstMessageInterruptionsEnabled?: boolean;
5387
5801
  /**
5388
5802
  * This is the mode for the first message. Default is 'assistant-speaks-first'.
5389
5803
  *
@@ -5432,9 +5846,10 @@ export interface Assistant {
5432
5846
  maxDurationSeconds?: number;
5433
5847
  /**
5434
5848
  * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
5435
- * @example "office"
5849
+ * You can also provide a custom sound by providing a URL to an audio file.
5850
+ * @maxLength 1000
5436
5851
  */
5437
- backgroundSound?: 'off' | 'office';
5852
+ backgroundSound?: 'off' | 'office' | string;
5438
5853
  /**
5439
5854
  * This enables filtering of noise and background speech while the user is talking.
5440
5855
  *
@@ -5461,7 +5876,7 @@ export interface Assistant {
5461
5876
  */
5462
5877
  observabilityPlan?: LangfuseObservabilityPlan;
5463
5878
  /** 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. */
5464
- 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)[];
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)[];
5465
5880
  /**
5466
5881
  * This is the name of the assistant.
5467
5882
  *
@@ -5568,14 +5983,14 @@ export interface AssistantPaginatedResponse {
5568
5983
  }
5569
5984
  export interface UpdateAssistantDTO {
5570
5985
  /** These are the options for the assistant's transcriber. */
5571
- transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber;
5986
+ transcriber?: AssemblyAITranscriber | AzureSpeechTranscriber | CustomTranscriber | DeepgramTranscriber | ElevenLabsTranscriber | GladiaTranscriber | SpeechmaticsTranscriber | TalkscriberTranscriber | GoogleTranscriber | OpenAITranscriber;
5572
5987
  /** These are the options for the assistant's LLM. */
5573
5988
  model?: AnyscaleModel | AnthropicModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | VapiModel | XaiModel;
5574
5989
  /**
5575
5990
  * These are the options for the assistant's voice.
5576
5991
  * @default {"provider":"playht","voiceId":"jennifer"}
5577
5992
  */
5578
- voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeetsVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
5993
+ voice?: AzureVoice | CartesiaVoice | CustomVoice | DeepgramVoice | ElevenLabsVoice | HumeVoice | LMNTVoice | NeuphonicVoice | OpenAIVoice | PlayHTVoice | RimeAIVoice | SmallestAIVoice | TavusVoice | VapiVoice;
5579
5994
  /**
5580
5995
  * This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
5581
5996
  *
@@ -5583,6 +5998,8 @@ export interface UpdateAssistantDTO {
5583
5998
  * @example "Hello! How can I help you today?"
5584
5999
  */
5585
6000
  firstMessage?: string;
6001
+ /** @default false */
6002
+ firstMessageInterruptionsEnabled?: boolean;
5586
6003
  /**
5587
6004
  * This is the mode for the first message. Default is 'assistant-speaks-first'.
5588
6005
  *
@@ -5631,9 +6048,10 @@ export interface UpdateAssistantDTO {
5631
6048
  maxDurationSeconds?: number;
5632
6049
  /**
5633
6050
  * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
5634
- * @example "office"
6051
+ * You can also provide a custom sound by providing a URL to an audio file.
6052
+ * @maxLength 1000
5635
6053
  */
5636
- backgroundSound?: 'off' | 'office';
6054
+ backgroundSound?: 'off' | 'office' | string;
5637
6055
  /**
5638
6056
  * This enables filtering of noise and background speech while the user is talking.
5639
6057
  *
@@ -5660,7 +6078,7 @@ export interface UpdateAssistantDTO {
5660
6078
  */
5661
6079
  observabilityPlan?: LangfuseObservabilityPlan;
5662
6080
  /** 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. */
5663
- 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)[];
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)[];
5664
6082
  /**
5665
6083
  * This is the name of the assistant.
5666
6084
  *
@@ -7265,6 +7683,108 @@ export interface QueryTool {
7265
7683
  */
7266
7684
  server?: Server;
7267
7685
  }
7686
+ export interface GoogleCalendarCreateEventTool {
7687
+ /**
7688
+ * This determines if the tool is async.
7689
+ *
7690
+ * 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.
7691
+ *
7692
+ * 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.
7693
+ *
7694
+ * Defaults to synchronous (`false`).
7695
+ * @example false
7696
+ */
7697
+ async?: boolean;
7698
+ /**
7699
+ * These are the messages that will be spoken to the user as the tool is running.
7700
+ *
7701
+ * 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.
7702
+ */
7703
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7704
+ /** The type of tool. "google.calendar.event.create" for Google Calendar tool. */
7705
+ type: 'google.calendar.event.create';
7706
+ /** This is the unique identifier for the tool. */
7707
+ id: string;
7708
+ /** This is the unique identifier for the organization that this tool belongs to. */
7709
+ orgId: string;
7710
+ /**
7711
+ * This is the ISO 8601 date-time string of when the tool was created.
7712
+ * @format date-time
7713
+ */
7714
+ createdAt: string;
7715
+ /**
7716
+ * This is the ISO 8601 date-time string of when the tool was last updated.
7717
+ * @format date-time
7718
+ */
7719
+ updatedAt: string;
7720
+ /**
7721
+ * This is the function definition of the tool.
7722
+ *
7723
+ * 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.
7724
+ *
7725
+ * 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.
7726
+ */
7727
+ function?: OpenAIFunction;
7728
+ /**
7729
+ * This is the server that will be hit when this tool is requested by the model.
7730
+ *
7731
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
7732
+ *
7733
+ * 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.
7734
+ */
7735
+ server?: Server;
7736
+ }
7737
+ export interface GoogleSheetsRowAppendTool {
7738
+ /**
7739
+ * This determines if the tool is async.
7740
+ *
7741
+ * 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.
7742
+ *
7743
+ * 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.
7744
+ *
7745
+ * Defaults to synchronous (`false`).
7746
+ * @example false
7747
+ */
7748
+ async?: boolean;
7749
+ /**
7750
+ * These are the messages that will be spoken to the user as the tool is running.
7751
+ *
7752
+ * 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.
7753
+ */
7754
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7755
+ /** The type of tool. "google.sheets.row.append" for Google Sheets tool. */
7756
+ type: 'google.sheets.row.append';
7757
+ /** This is the unique identifier for the tool. */
7758
+ id: string;
7759
+ /** This is the unique identifier for the organization that this tool belongs to. */
7760
+ orgId: string;
7761
+ /**
7762
+ * This is the ISO 8601 date-time string of when the tool was created.
7763
+ * @format date-time
7764
+ */
7765
+ createdAt: string;
7766
+ /**
7767
+ * This is the ISO 8601 date-time string of when the tool was last updated.
7768
+ * @format date-time
7769
+ */
7770
+ updatedAt: string;
7771
+ /**
7772
+ * This is the function definition of the tool.
7773
+ *
7774
+ * 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.
7775
+ *
7776
+ * 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.
7777
+ */
7778
+ function?: OpenAIFunction;
7779
+ /**
7780
+ * This is the server that will be hit when this tool is requested by the model.
7781
+ *
7782
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
7783
+ *
7784
+ * 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.
7785
+ */
7786
+ server?: Server;
7787
+ }
7268
7788
  export interface CreateOutputToolDTO {
7269
7789
  /**
7270
7790
  * This determines if the tool is async.
@@ -7479,6 +7999,80 @@ export interface CreateQueryToolDTO {
7479
7999
  */
7480
8000
  server?: Server;
7481
8001
  }
8002
+ export interface CreateGoogleCalendarCreateEventToolDTO {
8003
+ /**
8004
+ * This determines if the tool is async.
8005
+ *
8006
+ * 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.
8007
+ *
8008
+ * 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.
8009
+ *
8010
+ * Defaults to synchronous (`false`).
8011
+ * @example false
8012
+ */
8013
+ async?: boolean;
8014
+ /**
8015
+ * These are the messages that will be spoken to the user as the tool is running.
8016
+ *
8017
+ * 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
+ */
8019
+ 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
+ /**
8023
+ * This is the function definition of the tool.
8024
+ *
8025
+ * 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.
8026
+ *
8027
+ * 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.
8028
+ */
8029
+ function?: OpenAIFunction;
8030
+ /**
8031
+ * This is the server that will be hit when this tool is requested by the model.
8032
+ *
8033
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8034
+ *
8035
+ * 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.
8036
+ */
8037
+ server?: Server;
8038
+ }
8039
+ export interface CreateGoogleSheetsRowAppendToolDTO {
8040
+ /**
8041
+ * This determines if the tool is async.
8042
+ *
8043
+ * 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.
8044
+ *
8045
+ * 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.
8046
+ *
8047
+ * Defaults to synchronous (`false`).
8048
+ * @example false
8049
+ */
8050
+ async?: boolean;
8051
+ /**
8052
+ * These are the messages that will be spoken to the user as the tool is running.
8053
+ *
8054
+ * 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
+ */
8056
+ 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
+ /**
8060
+ * This is the function definition of the tool.
8061
+ *
8062
+ * 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.
8063
+ *
8064
+ * 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.
8065
+ */
8066
+ function?: OpenAIFunction;
8067
+ /**
8068
+ * This is the server that will be hit when this tool is requested by the model.
8069
+ *
8070
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8071
+ *
8072
+ * 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
+ */
8074
+ server?: Server;
8075
+ }
7482
8076
  export interface UpdateDtmfToolDTO {
7483
8077
  /**
7484
8078
  * This determines if the tool is async.
@@ -7897,6 +8491,76 @@ export interface UpdateQueryToolDTO {
7897
8491
  */
7898
8492
  server?: Server;
7899
8493
  }
8494
+ export interface UpdateGoogleCalendarCreateEventToolDTO {
8495
+ /**
8496
+ * This determines if the tool is async.
8497
+ *
8498
+ * 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.
8499
+ *
8500
+ * 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.
8501
+ *
8502
+ * Defaults to synchronous (`false`).
8503
+ * @example false
8504
+ */
8505
+ async?: boolean;
8506
+ /**
8507
+ * These are the messages that will be spoken to the user as the tool is running.
8508
+ *
8509
+ * 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.
8510
+ */
8511
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8512
+ /**
8513
+ * This is the function definition of the tool.
8514
+ *
8515
+ * 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.
8516
+ *
8517
+ * 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.
8518
+ */
8519
+ function?: OpenAIFunction;
8520
+ /**
8521
+ * This is the server that will be hit when this tool is requested by the model.
8522
+ *
8523
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8524
+ *
8525
+ * 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.
8526
+ */
8527
+ server?: Server;
8528
+ }
8529
+ export interface UpdateGoogleSheetsRowAppendToolDTO {
8530
+ /**
8531
+ * This determines if the tool is async.
8532
+ *
8533
+ * 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.
8534
+ *
8535
+ * 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.
8536
+ *
8537
+ * Defaults to synchronous (`false`).
8538
+ * @example false
8539
+ */
8540
+ async?: boolean;
8541
+ /**
8542
+ * These are the messages that will be spoken to the user as the tool is running.
8543
+ *
8544
+ * 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.
8545
+ */
8546
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8547
+ /**
8548
+ * This is the function definition of the tool.
8549
+ *
8550
+ * 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.
8551
+ *
8552
+ * 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.
8553
+ */
8554
+ function?: OpenAIFunction;
8555
+ /**
8556
+ * This is the server that will be hit when this tool is requested by the model.
8557
+ *
8558
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8559
+ *
8560
+ * 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.
8561
+ */
8562
+ server?: Server;
8563
+ }
7900
8564
  export interface CreateFileDTO {
7901
8565
  /**
7902
8566
  * This is the File you want to upload for use with the Knowledge Base.
@@ -8184,59 +8848,169 @@ export interface UpdateSquadDTO {
8184
8848
  */
8185
8849
  membersOverrides?: AssistantOverrides;
8186
8850
  }
8851
+ export interface TesterPlan {
8852
+ /**
8853
+ * Pass a transient assistant to use for the test assistant.
8854
+ *
8855
+ * Make sure to write a detailed system prompt for a test assistant, and use the {{test.script}} variable to access the test script.
8856
+ */
8857
+ assistant?: CreateAssistantDTO;
8858
+ /**
8859
+ * Pass an assistant id that can be access
8860
+ *
8861
+ * Make sure to write a detailed system prompt for the test assistant, and use the {{test.script}} variable to access the test script.
8862
+ */
8863
+ assistantId?: string;
8864
+ /**
8865
+ * Add any assistant overrides to the test assistant.
8866
+ *
8867
+ * One use case is if you want to pass custom variables into the test using variableValues, that you can then access in the script
8868
+ * and rubric using {{varName}}.
8869
+ */
8870
+ assistantOverrides?: AssistantOverrides;
8871
+ }
8872
+ export interface TestSuitePhoneNumber {
8873
+ /** This is the provider of the phone number. */
8874
+ provider: 'test-suite';
8875
+ /**
8876
+ * This is the phone number that is being tested.
8877
+ * @maxLength 50
8878
+ */
8879
+ number: string;
8880
+ }
8881
+ export interface TargetPlan {
8882
+ /** This is the phoneNumberId that is being tested. */
8883
+ 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. */
8885
+ phoneNumber?: TestSuitePhoneNumber;
8886
+ }
8187
8887
  export interface TestSuite {
8188
8888
  /** This is the unique identifier for the test suite. */
8189
8889
  id: string;
8190
- /** This is the unique identifier for the org that this test suite belongs to. */
8890
+ /** This is the unique identifier for the org that this test suite belongs to. */
8891
+ orgId: string;
8892
+ /**
8893
+ * This is the ISO 8601 date-time string of when the test suite was created.
8894
+ * @format date-time
8895
+ */
8896
+ createdAt: string;
8897
+ /**
8898
+ * This is the ISO 8601 date-time string of when the test suite was last updated.
8899
+ * @format date-time
8900
+ */
8901
+ updatedAt: string;
8902
+ /**
8903
+ * This is the name of the test suite.
8904
+ * @maxLength 80
8905
+ */
8906
+ name?: string;
8907
+ /**
8908
+ * This is the phone number ID associated with this test suite.
8909
+ * @deprecated
8910
+ */
8911
+ phoneNumberId?: string;
8912
+ /**
8913
+ * Override the default tester plan by providing custom assistant configuration for the test agent.
8914
+ *
8915
+ * We recommend only using this if you are confident, as we have already set sensible defaults on the tester plan.
8916
+ */
8917
+ testerPlan?: TesterPlan;
8918
+ /** These are the configuration for the assistant / phone number that is being tested. */
8919
+ targetPlan?: TargetPlan;
8920
+ }
8921
+ export interface TestSuitesPaginatedResponse {
8922
+ results: TestSuite[];
8923
+ metadata: PaginationMeta;
8924
+ }
8925
+ export interface CreateTestSuiteDto {
8926
+ /**
8927
+ * This is the name of the test suite.
8928
+ * @maxLength 80
8929
+ */
8930
+ name?: string;
8931
+ /**
8932
+ * This is the phone number ID associated with this test suite.
8933
+ * @deprecated
8934
+ */
8935
+ phoneNumberId?: string;
8936
+ /**
8937
+ * Override the default tester plan by providing custom assistant configuration for the test agent.
8938
+ *
8939
+ * We recommend only using this if you are confident, as we have already set sensible defaults on the tester plan.
8940
+ */
8941
+ testerPlan?: TesterPlan;
8942
+ /** These are the configuration for the assistant / phone number that is being tested. */
8943
+ targetPlan?: TargetPlan;
8944
+ }
8945
+ export interface UpdateTestSuiteDto {
8946
+ /**
8947
+ * This is the name of the test suite.
8948
+ * @maxLength 80
8949
+ */
8950
+ name?: string;
8951
+ /**
8952
+ * This is the phone number ID associated with this test suite.
8953
+ * @deprecated
8954
+ */
8955
+ phoneNumberId?: string;
8956
+ /**
8957
+ * Override the default tester plan by providing custom assistant configuration for the test agent.
8958
+ *
8959
+ * We recommend only using this if you are confident, as we have already set sensible defaults on the tester plan.
8960
+ */
8961
+ testerPlan?: TesterPlan;
8962
+ /** These are the configuration for the assistant / phone number that is being tested. */
8963
+ targetPlan?: TargetPlan;
8964
+ }
8965
+ export interface TestSuiteTestVoice {
8966
+ /** These are the scorers used to evaluate the test. */
8967
+ scorers: TestSuiteTestScorerAI[];
8968
+ /**
8969
+ * This is the type of the test, which must be voice.
8970
+ * @maxLength 100
8971
+ */
8972
+ type: 'voice';
8973
+ /** This is the unique identifier for the test. */
8974
+ id: string;
8975
+ /** This is the unique identifier for the test suite this test belongs to. */
8976
+ testSuiteId: string;
8977
+ /** This is the unique identifier for the organization this test belongs to. */
8191
8978
  orgId: string;
8192
8979
  /**
8193
- * This is the ISO 8601 date-time string of when the test suite was created.
8980
+ * This is the ISO 8601 date-time string of when the test was created.
8194
8981
  * @format date-time
8195
8982
  */
8196
8983
  createdAt: string;
8197
8984
  /**
8198
- * This is the ISO 8601 date-time string of when the test suite was last updated.
8985
+ * This is the ISO 8601 date-time string of when the test was last updated.
8199
8986
  * @format date-time
8200
8987
  */
8201
8988
  updatedAt: string;
8202
8989
  /**
8203
- * This is the name of the test suite.
8990
+ * This is the name of the test.
8204
8991
  * @maxLength 80
8205
8992
  */
8206
8993
  name?: string;
8207
- /** This is the phone number ID associated with this test suite. */
8208
- phoneNumberId?: string;
8209
- }
8210
- export interface TestSuitesPaginatedResponse {
8211
- results: TestSuite[];
8212
- metadata: PaginationMeta;
8213
- }
8214
- export interface CreateTestSuiteDto {
8215
8994
  /**
8216
- * This is the name of the test suite.
8217
- * @maxLength 80
8995
+ * This is the script to be used for the voice test.
8996
+ * @maxLength 10000
8218
8997
  */
8219
- name?: string;
8220
- /** This is the phone number ID associated with this test suite. */
8221
- phoneNumberId?: string;
8222
- }
8223
- export interface UpdateTestSuiteDto {
8998
+ script: string;
8224
8999
  /**
8225
- * This is the name of the test suite.
8226
- * @maxLength 80
9000
+ * This is the number of attempts allowed for the test.
9001
+ * @min 1
9002
+ * @max 10
8227
9003
  */
8228
- name?: string;
8229
- /** This is the phone number ID associated with this test suite. */
8230
- phoneNumberId?: string;
9004
+ numAttempts?: number;
8231
9005
  }
8232
- export interface TestSuiteTestVoice {
9006
+ export interface TestSuiteTestChat {
8233
9007
  /** These are the scorers used to evaluate the test. */
8234
9008
  scorers: TestSuiteTestScorerAI[];
8235
9009
  /**
8236
- * This is the type of the test, which must be voice.
9010
+ * This is the type of the test, which must be chat.
8237
9011
  * @maxLength 100
8238
9012
  */
8239
- type: 'voice';
9013
+ type: 'chat';
8240
9014
  /** This is the unique identifier for the test. */
8241
9015
  id: string;
8242
9016
  /** This is the unique identifier for the test suite this test belongs to. */
@@ -8259,7 +9033,7 @@ export interface TestSuiteTestVoice {
8259
9033
  */
8260
9034
  name?: string;
8261
9035
  /**
8262
- * This is the script to be used for the voice test.
9036
+ * This is the script to be used for the chat test.
8263
9037
  * @maxLength 10000
8264
9038
  */
8265
9039
  script: string;
@@ -8295,9 +9069,39 @@ export interface CreateTestSuiteTestVoiceDto {
8295
9069
  */
8296
9070
  name?: string;
8297
9071
  }
9072
+ export interface CreateTestSuiteTestChatDto {
9073
+ /** These are the scorers used to evaluate the test. */
9074
+ scorers: TestSuiteTestScorerAI[];
9075
+ /**
9076
+ * This is the type of the test, which must be chat.
9077
+ * @maxLength 100
9078
+ */
9079
+ type: 'chat';
9080
+ /**
9081
+ * This is the script to be used for the chat test.
9082
+ * @maxLength 10000
9083
+ */
9084
+ script: string;
9085
+ /**
9086
+ * This is the number of attempts allowed for the test.
9087
+ * @min 1
9088
+ * @max 10
9089
+ */
9090
+ numAttempts?: number;
9091
+ /**
9092
+ * This is the name of the test.
9093
+ * @maxLength 80
9094
+ */
9095
+ name?: string;
9096
+ }
8298
9097
  export interface UpdateTestSuiteTestVoiceDto {
8299
9098
  /** These are the scorers used to evaluate the test. */
8300
9099
  scorers?: TestSuiteTestScorerAI[];
9100
+ /**
9101
+ * This is the type of the test, which must be voice.
9102
+ * @maxLength 100
9103
+ */
9104
+ type?: 'voice';
8301
9105
  /**
8302
9106
  * This is the name of the test.
8303
9107
  * @maxLength 80
@@ -8315,6 +9119,31 @@ export interface UpdateTestSuiteTestVoiceDto {
8315
9119
  */
8316
9120
  numAttempts?: number;
8317
9121
  }
9122
+ export interface UpdateTestSuiteTestChatDto {
9123
+ /** These are the scorers used to evaluate the test. */
9124
+ scorers?: TestSuiteTestScorerAI[];
9125
+ /**
9126
+ * This is the type of the test, which must be chat.
9127
+ * @maxLength 100
9128
+ */
9129
+ type?: 'chat';
9130
+ /**
9131
+ * This is the name of the test.
9132
+ * @maxLength 80
9133
+ */
9134
+ name?: string;
9135
+ /**
9136
+ * This is the script to be used for the chat test.
9137
+ * @maxLength 10000
9138
+ */
9139
+ script?: string;
9140
+ /**
9141
+ * This is the number of attempts allowed for the test.
9142
+ * @min 1
9143
+ * @max 10
9144
+ */
9145
+ numAttempts?: number;
9146
+ }
8318
9147
  export interface TestSuiteTestScorerAI {
8319
9148
  /**
8320
9149
  * This is the type of the scorer, which must be AI.
@@ -8329,7 +9158,7 @@ export interface TestSuiteTestScorerAI {
8329
9158
  }
8330
9159
  export interface TestSuiteTestsPaginatedResponse {
8331
9160
  /** A list of test suite tests. */
8332
- results: TestSuiteTestVoice[];
9161
+ results: (TestSuiteTestVoice | TestSuiteTestChat)[];
8333
9162
  /** Metadata about the pagination. */
8334
9163
  metadata: PaginationMeta;
8335
9164
  }
@@ -8625,6 +9454,15 @@ export interface CreateOrgDTO {
8625
9454
  * @max 10
8626
9455
  */
8627
9456
  concurrencyLimit?: number;
9457
+ /**
9458
+ * Stores the information about the compliance plan enforced at the organization level. Currently pciEnabled is supported through this field.
9459
+ * When this is enabled, any logs, recordings, or transcriptions will be shipped to the customer endpoints if provided else lost.
9460
+ * At the end of the call, you will receive an end-of-call-report message to store on your server, if webhook is provided.
9461
+ * Defaults to false.
9462
+ * When PCI is enabled, only PCI-compliant Providers will be available for LLM, Voice and transcribers.
9463
+ * This is due to the compliance requirements of PCI. Other providers may not meet these requirements.
9464
+ */
9465
+ compliancePlan?: CompliancePlan;
8628
9466
  }
8629
9467
  export interface AutoReloadPlan {
8630
9468
  /** This the amount of credits to reload. */
@@ -8766,6 +9604,13 @@ export interface Subscription {
8766
9604
  couponUsageLeft?: string;
8767
9605
  /** This is the invoice plan for the subscription. */
8768
9606
  invoicePlan?: InvoicePlan;
9607
+ /**
9608
+ * This is the PCI enabled flag for the subscription. It determines whether orgs under this
9609
+ * subscription have the option to enable PCI compliance.
9610
+ */
9611
+ pciEnabled?: boolean;
9612
+ /** This is the ID for the Common Paper agreement outlining the PCI contract. */
9613
+ pciCommonPaperAgreementId?: string;
8769
9614
  }
8770
9615
  export interface OrgPlan {
8771
9616
  includedProviders?: object[];
@@ -8839,6 +9684,15 @@ export interface Org {
8839
9684
  * @max 10
8840
9685
  */
8841
9686
  concurrencyLimit?: number;
9687
+ /**
9688
+ * Stores the information about the compliance plan enforced at the organization level. Currently pciEnabled is supported through this field.
9689
+ * When this is enabled, any logs, recordings, or transcriptions will be shipped to the customer endpoints if provided else lost.
9690
+ * At the end of the call, you will receive an end-of-call-report message to store on your server, if webhook is provided.
9691
+ * Defaults to false.
9692
+ * When PCI is enabled, only PCI-compliant Providers will be available for LLM, Voice and transcribers.
9693
+ * This is due to the compliance requirements of PCI. Other providers may not meet these requirements.
9694
+ */
9695
+ compliancePlan?: CompliancePlan;
8842
9696
  }
8843
9697
  export interface UpdateOrgDTO {
8844
9698
  /**
@@ -8879,6 +9733,15 @@ export interface UpdateOrgDTO {
8879
9733
  * @max 10
8880
9734
  */
8881
9735
  concurrencyLimit?: number;
9736
+ /**
9737
+ * Stores the information about the compliance plan enforced at the organization level. Currently pciEnabled is supported through this field.
9738
+ * When this is enabled, any logs, recordings, or transcriptions will be shipped to the customer endpoints if provided else lost.
9739
+ * At the end of the call, you will receive an end-of-call-report message to store on your server, if webhook is provided.
9740
+ * Defaults to false.
9741
+ * When PCI is enabled, only PCI-compliant Providers will be available for LLM, Voice and transcribers.
9742
+ * This is due to the compliance requirements of PCI. Other providers may not meet these requirements.
9743
+ */
9744
+ compliancePlan?: CompliancePlan;
8882
9745
  }
8883
9746
  export interface User {
8884
9747
  /** This is the unique identifier for the profile or user. */
@@ -9103,7 +9966,7 @@ export interface AzureOpenAICredential {
9103
9966
  provider: 'azure-openai';
9104
9967
  region: 'australia' | 'canadaeast' | 'canadacentral' | 'eastus2' | 'eastus' | 'france' | 'india' | 'japaneast' | 'japanwest' | 'uaenorth' | 'northcentralus' | 'norway' | 'southcentralus' | 'swedencentral' | 'switzerland' | 'uk' | 'westus' | 'westus3';
9105
9968
  /** @example ["gpt-4-0125-preview","gpt-4-0613"] */
9106
- models: 'gpt-4o-2024-08-06' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-05-13' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4-0613' | 'gpt-35-turbo-0125' | 'gpt-35-turbo-1106';
9969
+ models: 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-05-13' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4-0613' | 'gpt-35-turbo-0125' | 'gpt-35-turbo-1106';
9107
9970
  /**
9108
9971
  * This is not returned in the API.
9109
9972
  * @maxLength 10000
@@ -10197,6 +11060,54 @@ export interface XAiCredential {
10197
11060
  */
10198
11061
  name?: string;
10199
11062
  }
11063
+ export interface GoogleCalendarOAuth2ClientCredential {
11064
+ provider: 'google.calendar.oauth2-client';
11065
+ /** This is the unique identifier for the credential. */
11066
+ id: string;
11067
+ /** This is the unique identifier for the org that this credential belongs to. */
11068
+ orgId: string;
11069
+ /**
11070
+ * This is the ISO 8601 date-time string of when the credential was created.
11071
+ * @format date-time
11072
+ */
11073
+ createdAt: string;
11074
+ /**
11075
+ * This is the ISO 8601 date-time string of when the assistant was last updated.
11076
+ * @format date-time
11077
+ */
11078
+ updatedAt: string;
11079
+ /**
11080
+ * This is the name of credential. This is just for your reference.
11081
+ * @minLength 1
11082
+ * @maxLength 40
11083
+ */
11084
+ name?: string;
11085
+ }
11086
+ export interface GoogleCalendarOAuth2AuthorizationCredential {
11087
+ provider: 'google.calendar.oauth2-authorization';
11088
+ /** The authorization ID for the OAuth2 authorization */
11089
+ authorizationId: string;
11090
+ /** This is the unique identifier for the credential. */
11091
+ id: string;
11092
+ /** This is the unique identifier for the org that this credential belongs to. */
11093
+ orgId: string;
11094
+ /**
11095
+ * This is the ISO 8601 date-time string of when the credential was created.
11096
+ * @format date-time
11097
+ */
11098
+ createdAt: string;
11099
+ /**
11100
+ * This is the ISO 8601 date-time string of when the assistant was last updated.
11101
+ * @format date-time
11102
+ */
11103
+ updatedAt: string;
11104
+ /**
11105
+ * This is the name of credential. This is just for your reference.
11106
+ * @minLength 1
11107
+ * @maxLength 40
11108
+ */
11109
+ name?: string;
11110
+ }
10200
11111
  export interface CreateCerebrasCredentialDTO {
10201
11112
  provider: 'cerebras';
10202
11113
  /**
@@ -10363,7 +11274,7 @@ export interface UpdateAzureCredentialDTO {
10363
11274
  export interface UpdateAzureOpenAICredentialDTO {
10364
11275
  region?: 'australia' | 'canadaeast' | 'canadacentral' | 'eastus2' | 'eastus' | 'france' | 'india' | 'japaneast' | 'japanwest' | 'uaenorth' | 'northcentralus' | 'norway' | 'southcentralus' | 'swedencentral' | 'switzerland' | 'uk' | 'westus' | 'westus3';
10365
11276
  /** @example ["gpt-4-0125-preview","gpt-4-0613"] */
10366
- models?: 'gpt-4o-2024-08-06' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-05-13' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4-0613' | 'gpt-35-turbo-0125' | 'gpt-35-turbo-1106';
11277
+ models?: 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-05-13' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4-0613' | 'gpt-35-turbo-0125' | 'gpt-35-turbo-1106';
10367
11278
  /**
10368
11279
  * This is not returned in the API.
10369
11280
  * @maxLength 10000
@@ -10841,6 +11752,56 @@ export interface UpdateXAiCredentialDTO {
10841
11752
  */
10842
11753
  name?: string;
10843
11754
  }
11755
+ export interface UpdateGoogleCalendarOAuth2ClientCredentialDTO {
11756
+ /**
11757
+ * This is the name of credential. This is just for your reference.
11758
+ * @minLength 1
11759
+ * @maxLength 40
11760
+ */
11761
+ name?: string;
11762
+ }
11763
+ export interface UpdateGoogleCalendarOAuth2AuthorizationCredentialDTO {
11764
+ /** The authorization ID for the OAuth2 authorization */
11765
+ authorizationId?: string;
11766
+ /**
11767
+ * This is the name of credential. This is just for your reference.
11768
+ * @minLength 1
11769
+ * @maxLength 40
11770
+ */
11771
+ name?: string;
11772
+ }
11773
+ export interface CredentialSessionResponse {
11774
+ sessionToken: string;
11775
+ }
11776
+ export interface CredentialEndUser {
11777
+ endUserId: string;
11778
+ organizationId: string;
11779
+ }
11780
+ export interface CredentialSessionError {
11781
+ type: string;
11782
+ description: string;
11783
+ }
11784
+ export interface CredentialWebhookDTO {
11785
+ type: 'auth' | 'sync' | 'forward';
11786
+ operation: 'creation' | 'override' | 'refresh';
11787
+ from: string;
11788
+ connectionId: string;
11789
+ authMode: 'OAUTH2' | 'API_KEY' | 'BASIC';
11790
+ providerConfigKey: string;
11791
+ provider: string;
11792
+ environment: string;
11793
+ success: boolean;
11794
+ endUser: CredentialEndUser;
11795
+ error?: CredentialSessionError;
11796
+ }
11797
+ export interface CredentialActionRequest {
11798
+ action_name: string;
11799
+ input: object;
11800
+ }
11801
+ export interface CredentialSessionDTO {
11802
+ /** 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';
11804
+ }
10844
11805
  export interface ToolTemplateSetup {
10845
11806
  title: string;
10846
11807
  description?: string;
@@ -10877,14 +11838,28 @@ export interface FunctionToolProviderDetails {
10877
11838
  /** The type of tool. "function" for Function tool. */
10878
11839
  type: 'function';
10879
11840
  }
11841
+ export interface GoogleCalendarCreateEventToolProviderDetails {
11842
+ /** This is the Template URL or the Snapshot URL corresponding to the Template. */
11843
+ templateUrl?: string;
11844
+ setupInstructions?: ToolTemplateSetup[];
11845
+ /** The type of tool. "google.calendar.event.create" for Google Calendar tool. */
11846
+ type: 'google.calendar.event.create';
11847
+ }
11848
+ export interface GoogleSheetsRowAppendToolProviderDetails {
11849
+ /** This is the Template URL or the Snapshot URL corresponding to the Template. */
11850
+ templateUrl?: string;
11851
+ setupInstructions?: ToolTemplateSetup[];
11852
+ /** The type of tool. "google.sheets.row.append" for Google Sheets tool. */
11853
+ type: 'google.sheets.row.append';
11854
+ }
10880
11855
  export interface ToolTemplateMetadata {
10881
11856
  collectionType?: string;
10882
11857
  collectionId?: string;
10883
11858
  collectionName?: string;
10884
11859
  }
10885
11860
  export interface CreateToolTemplateDTO {
10886
- details?: CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO;
10887
- providerDetails?: MakeToolProviderDetails | GhlToolProviderDetails | FunctionToolProviderDetails;
11861
+ details?: CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO;
11862
+ providerDetails?: MakeToolProviderDetails | GhlToolProviderDetails | FunctionToolProviderDetails | GoogleCalendarCreateEventToolProviderDetails | GoogleSheetsRowAppendToolProviderDetails;
10888
11863
  metadata?: ToolTemplateMetadata;
10889
11864
  /** @default "private" */
10890
11865
  visibility?: 'public' | 'private';
@@ -10898,8 +11873,8 @@ export interface CreateToolTemplateDTO {
10898
11873
  provider?: 'make' | 'gohighlevel' | 'function';
10899
11874
  }
10900
11875
  export interface Template {
10901
- details?: CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO;
10902
- providerDetails?: MakeToolProviderDetails | GhlToolProviderDetails | FunctionToolProviderDetails;
11876
+ details?: CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO;
11877
+ providerDetails?: MakeToolProviderDetails | GhlToolProviderDetails | FunctionToolProviderDetails | GoogleCalendarCreateEventToolProviderDetails | GoogleSheetsRowAppendToolProviderDetails;
10903
11878
  metadata?: ToolTemplateMetadata;
10904
11879
  /** @default "private" */
10905
11880
  visibility?: 'public' | 'private';
@@ -10927,8 +11902,8 @@ export interface Template {
10927
11902
  updatedAt: string;
10928
11903
  }
10929
11904
  export interface UpdateToolTemplateDTO {
10930
- details?: CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO;
10931
- providerDetails?: MakeToolProviderDetails | GhlToolProviderDetails | FunctionToolProviderDetails;
11905
+ details?: CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO;
11906
+ providerDetails?: MakeToolProviderDetails | GhlToolProviderDetails | FunctionToolProviderDetails | GoogleCalendarCreateEventToolProviderDetails | GoogleSheetsRowAppendToolProviderDetails;
10932
11907
  metadata?: ToolTemplateMetadata;
10933
11908
  /** @default "private" */
10934
11909
  visibility?: 'public' | 'private';
@@ -10943,7 +11918,7 @@ export interface UpdateToolTemplateDTO {
10943
11918
  }
10944
11919
  export interface VoiceLibrary {
10945
11920
  /** This is the voice provider that will be used. */
10946
- provider?: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neets' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus';
11921
+ provider?: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame';
10947
11922
  /** The ID of the voice provided by the provider. */
10948
11923
  providerId?: string;
10949
11924
  /** The unique slug of the voice. */
@@ -10989,7 +11964,7 @@ export interface VoiceLibrary {
10989
11964
  }
10990
11965
  export interface SyncVoiceLibraryDTO {
10991
11966
  /** List of providers you want to sync. */
10992
- providers?: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neets' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus';
11967
+ providers?: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame';
10993
11968
  }
10994
11969
  export interface VoiceLibraryVoiceResponse {
10995
11970
  voiceId: string;
@@ -11090,7 +12065,7 @@ export interface ClientMessageToolCalls {
11090
12065
  /** This is the type of the message. "tool-calls" is sent to call a tool. */
11091
12066
  type?: 'tool-calls';
11092
12067
  /** This is the list of tools calls that the model is requesting along with the original tool configuration. */
11093
- toolWithToolCallList: (FunctionToolWithToolCall | GhlToolWithToolCall | MakeToolWithToolCall | BashToolWithToolCall | ComputerToolWithToolCall | TextEditorToolWithToolCall)[];
12068
+ toolWithToolCallList: (FunctionToolWithToolCall | GhlToolWithToolCall | MakeToolWithToolCall | BashToolWithToolCall | ComputerToolWithToolCall | TextEditorToolWithToolCall | GoogleCalendarCreateEventToolWithToolCall)[];
11094
12069
  /** This is the list of tool calls that the model is requesting. */
11095
12070
  toolCallList: ToolCall[];
11096
12071
  }
@@ -11246,7 +12221,7 @@ export interface ServerMessageEndOfCallReport {
11246
12221
  /** This is the type of the message. "end-of-call-report" is sent when the call ends and post-processing is complete. */
11247
12222
  type: 'end-of-call-report';
11248
12223
  /** This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id. */
11249
- 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-neets-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-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' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
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';
11250
12225
  /** This is the cost of the call in USD. This can also be found at `call.cost` on GET /call/:id. */
11251
12226
  cost?: number;
11252
12227
  /** These are the costs of individual components of the call in USD. This can also be found at `call.costs` on GET /call/:id. */
@@ -11574,7 +12549,7 @@ export interface ServerMessageStatusUpdate {
11574
12549
  /** This is the status of the call. */
11575
12550
  status: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
11576
12551
  /** This is the reason the call ended. This is only sent if the status is "ended". */
11577
- 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-neets-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-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' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
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';
11578
12553
  /** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
11579
12554
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
11580
12555
  /** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
@@ -11640,7 +12615,7 @@ export interface ServerMessageToolCalls {
11640
12615
  /** This is the type of the message. "tool-calls" is sent to call a tool. */
11641
12616
  type?: 'tool-calls';
11642
12617
  /** This is the list of tools calls that the model is requesting along with the original tool configuration. */
11643
- toolWithToolCallList: (FunctionToolWithToolCall | GhlToolWithToolCall | MakeToolWithToolCall | BashToolWithToolCall | ComputerToolWithToolCall | TextEditorToolWithToolCall)[];
12618
+ toolWithToolCallList: (FunctionToolWithToolCall | GhlToolWithToolCall | MakeToolWithToolCall | BashToolWithToolCall | ComputerToolWithToolCall | TextEditorToolWithToolCall | GoogleCalendarCreateEventToolWithToolCall)[];
11644
12619
  /** This is the ISO-8601 formatted timestamp of when the message was sent. */
11645
12620
  timestamp?: string;
11646
12621
  /**
@@ -12232,6 +13207,8 @@ export interface ClientInboundMessageSay {
12232
13207
  content?: string;
12233
13208
  /** This is the flag to end call after content is spoken. */
12234
13209
  endCallAfterSpoken?: boolean;
13210
+ /** This is the flag for whether the message is interruptible. */
13211
+ interruptionsEnabled?: boolean;
12235
13212
  }
12236
13213
  export interface ClientInboundMessageEndCall {
12237
13214
  /** This is the type of the message. Send "end-call" message to end the call. */
@@ -12685,6 +13662,82 @@ export interface TextEditorToolWithToolCall {
12685
13662
  */
12686
13663
  server?: Server;
12687
13664
  }
13665
+ export interface GoogleCalendarCreateEventToolWithToolCall {
13666
+ /**
13667
+ * This determines if the tool is async.
13668
+ *
13669
+ * 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.
13670
+ *
13671
+ * 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.
13672
+ *
13673
+ * Defaults to synchronous (`false`).
13674
+ * @example false
13675
+ */
13676
+ async?: boolean;
13677
+ /**
13678
+ * These are the messages that will be spoken to the user as the tool is running.
13679
+ *
13680
+ * 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.
13681
+ */
13682
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
13683
+ /** The type of tool. "google.calendar.event.create" for Google Calendar tool. */
13684
+ type: 'google.calendar.event.create';
13685
+ toolCall: ToolCall;
13686
+ /**
13687
+ * This is the function definition of the tool.
13688
+ *
13689
+ * 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.
13690
+ *
13691
+ * 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.
13692
+ */
13693
+ function?: OpenAIFunction;
13694
+ /**
13695
+ * This is the server that will be hit when this tool is requested by the model.
13696
+ *
13697
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
13698
+ *
13699
+ * 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.
13700
+ */
13701
+ server?: Server;
13702
+ }
13703
+ export interface GoogleSheetsRowAppendToolWithToolCall {
13704
+ /**
13705
+ * This determines if the tool is async.
13706
+ *
13707
+ * 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.
13708
+ *
13709
+ * 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.
13710
+ *
13711
+ * Defaults to synchronous (`false`).
13712
+ * @example false
13713
+ */
13714
+ async?: boolean;
13715
+ /**
13716
+ * These are the messages that will be spoken to the user as the tool is running.
13717
+ *
13718
+ * 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.
13719
+ */
13720
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
13721
+ /** The type of tool. "google.sheets.row.append" for Google Sheets tool. */
13722
+ type: 'google.sheets.row.append';
13723
+ toolCall: ToolCall;
13724
+ /**
13725
+ * This is the function definition of the tool.
13726
+ *
13727
+ * 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.
13728
+ *
13729
+ * 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.
13730
+ */
13731
+ function?: OpenAIFunction;
13732
+ /**
13733
+ * This is the server that will be hit when this tool is requested by the model.
13734
+ *
13735
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
13736
+ *
13737
+ * 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.
13738
+ */
13739
+ server?: Server;
13740
+ }
12688
13741
  export type QueryParamsType = Record<string | number, any>;
12689
13742
  export type ResponseFormat = keyof Omit<Body, 'body' | 'bodyUsed'>;
12690
13743
  export interface FullRequestParams extends Omit<RequestInit, 'body'> {
@@ -13555,7 +14608,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13555
14608
  type: 'textEditor';
13556
14609
  } & CreateTextEditorToolDTO) | ({
13557
14610
  type: 'query';
13558
- } & CreateQueryToolDTO), params?: RequestParams) => Promise<HttpResponse<({
14611
+ } & CreateQueryToolDTO) | ({
14612
+ type: 'google.calendar.event.create';
14613
+ } & CreateGoogleCalendarCreateEventToolDTO) | ({
14614
+ type: 'google.sheets.row.append';
14615
+ } & CreateGoogleSheetsRowAppendToolDTO), params?: RequestParams) => Promise<HttpResponse<({
13559
14616
  type: 'dtmf';
13560
14617
  } & DtmfTool) | ({
13561
14618
  type: 'endCall';
@@ -13577,7 +14634,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13577
14634
  type: 'textEditor';
13578
14635
  } & TextEditorTool) | ({
13579
14636
  type: 'query';
13580
- } & QueryTool), any>>;
14637
+ } & QueryTool) | ({
14638
+ type: 'google.calendar.event.create';
14639
+ } & GoogleCalendarCreateEventTool) | ({
14640
+ type: 'google.sheets.row.append';
14641
+ } & GoogleSheetsRowAppendTool), any>>;
13581
14642
  /**
13582
14643
  * No description
13583
14644
  *
@@ -13656,7 +14717,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13656
14717
  type: 'textEditor';
13657
14718
  } & TextEditorTool) | ({
13658
14719
  type: 'query';
13659
- } & QueryTool))[], any>>;
14720
+ } & QueryTool) | ({
14721
+ type: 'google.calendar.event.create';
14722
+ } & GoogleCalendarCreateEventTool) | ({
14723
+ type: 'google.sheets.row.append';
14724
+ } & GoogleSheetsRowAppendTool))[], any>>;
13660
14725
  /**
13661
14726
  * No description
13662
14727
  *
@@ -13688,7 +14753,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13688
14753
  type: 'textEditor';
13689
14754
  } & TextEditorTool) | ({
13690
14755
  type: 'query';
13691
- } & QueryTool), any>>;
14756
+ } & QueryTool) | ({
14757
+ type: 'google.calendar.event.create';
14758
+ } & GoogleCalendarCreateEventTool) | ({
14759
+ type: 'google.sheets.row.append';
14760
+ } & GoogleSheetsRowAppendTool), any>>;
13692
14761
  /**
13693
14762
  * No description
13694
14763
  *
@@ -13720,7 +14789,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13720
14789
  type: 'textEditor';
13721
14790
  } & UpdateTextEditorToolDTO) | ({
13722
14791
  type: 'query';
13723
- } & UpdateQueryToolDTO), params?: RequestParams) => Promise<HttpResponse<({
14792
+ } & UpdateQueryToolDTO) | ({
14793
+ type: 'google.calendar.event.create';
14794
+ } & UpdateGoogleCalendarCreateEventToolDTO) | ({
14795
+ type: 'google.sheets.row.append';
14796
+ } & UpdateGoogleSheetsRowAppendToolDTO), params?: RequestParams) => Promise<HttpResponse<({
13724
14797
  type: 'dtmf';
13725
14798
  } & DtmfTool) | ({
13726
14799
  type: 'endCall';
@@ -13742,7 +14815,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13742
14815
  type: 'textEditor';
13743
14816
  } & TextEditorTool) | ({
13744
14817
  type: 'query';
13745
- } & QueryTool), any>>;
14818
+ } & QueryTool) | ({
14819
+ type: 'google.calendar.event.create';
14820
+ } & GoogleCalendarCreateEventTool) | ({
14821
+ type: 'google.sheets.row.append';
14822
+ } & GoogleSheetsRowAppendTool), any>>;
13746
14823
  /**
13747
14824
  * No description
13748
14825
  *
@@ -13774,7 +14851,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13774
14851
  type: 'textEditor';
13775
14852
  } & TextEditorTool) | ({
13776
14853
  type: 'query';
13777
- } & QueryTool), any>>;
14854
+ } & QueryTool) | ({
14855
+ type: 'google.calendar.event.create';
14856
+ } & GoogleCalendarCreateEventTool) | ({
14857
+ type: 'google.sheets.row.append';
14858
+ } & GoogleSheetsRowAppendTool), any>>;
13778
14859
  };
13779
14860
  file: {
13780
14861
  /**
@@ -14295,11 +15376,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14295
15376
  * @request POST:/test-suite/{testSuiteId}/test
14296
15377
  * @secure
14297
15378
  */
14298
- testSuiteTestControllerCreate: (testSuiteId: string, data: {
15379
+ testSuiteTestControllerCreate: (testSuiteId: string, data: ({
14299
15380
  type: 'voice';
14300
- } & CreateTestSuiteTestVoiceDto, params?: RequestParams) => Promise<HttpResponse<TestSuiteTestVoice, {
15381
+ } & CreateTestSuiteTestVoiceDto) | ({
15382
+ type: 'chat';
15383
+ } & CreateTestSuiteTestChatDto), params?: RequestParams) => Promise<HttpResponse<({
14301
15384
  type: 'voice';
14302
- } & TestSuiteTestVoice>>;
15385
+ } & TestSuiteTestVoice) | ({
15386
+ type: 'chat';
15387
+ } & TestSuiteTestChat), any>>;
14303
15388
  /**
14304
15389
  * No description
14305
15390
  *
@@ -14309,9 +15394,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14309
15394
  * @request GET:/test-suite/{testSuiteId}/test/{id}
14310
15395
  * @secure
14311
15396
  */
14312
- testSuiteTestControllerFindOne: (testSuiteId: string, id: string, params?: RequestParams) => Promise<HttpResponse<TestSuiteTestVoice, {
15397
+ testSuiteTestControllerFindOne: (testSuiteId: string, id: string, params?: RequestParams) => Promise<HttpResponse<({
14313
15398
  type: 'voice';
14314
- } & TestSuiteTestVoice>>;
15399
+ } & TestSuiteTestVoice) | ({
15400
+ type: 'chat';
15401
+ } & TestSuiteTestChat), any>>;
14315
15402
  /**
14316
15403
  * No description
14317
15404
  *
@@ -14321,11 +15408,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14321
15408
  * @request PATCH:/test-suite/{testSuiteId}/test/{id}
14322
15409
  * @secure
14323
15410
  */
14324
- testSuiteTestControllerUpdate: (testSuiteId: string, id: string, data: {
15411
+ testSuiteTestControllerUpdate: (testSuiteId: string, id: string, data: ({
14325
15412
  type: 'voice';
14326
- } & UpdateTestSuiteTestVoiceDto, params?: RequestParams) => Promise<HttpResponse<TestSuiteTestVoice, {
15413
+ } & UpdateTestSuiteTestVoiceDto) | ({
15414
+ type: 'chat';
15415
+ } & UpdateTestSuiteTestChatDto), params?: RequestParams) => Promise<HttpResponse<({
14327
15416
  type: 'voice';
14328
- } & TestSuiteTestVoice>>;
15417
+ } & TestSuiteTestVoice) | ({
15418
+ type: 'chat';
15419
+ } & TestSuiteTestChat), any>>;
14329
15420
  /**
14330
15421
  * No description
14331
15422
  *
@@ -14335,9 +15426,11 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14335
15426
  * @request DELETE:/test-suite/{testSuiteId}/test/{id}
14336
15427
  * @secure
14337
15428
  */
14338
- testSuiteTestControllerRemove: (testSuiteId: string, id: string, params?: RequestParams) => Promise<HttpResponse<{
15429
+ testSuiteTestControllerRemove: (testSuiteId: string, id: string, params?: RequestParams) => Promise<HttpResponse<({
14339
15430
  type: 'voice';
14340
- } & TestSuiteTestVoice, any>>;
15431
+ } & TestSuiteTestVoice) | ({
15432
+ type: 'chat';
15433
+ } & TestSuiteTestChat), any>>;
14341
15434
  /**
14342
15435
  * No description
14343
15436
  *
@@ -14882,7 +15975,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14882
15975
  * @request POST:/credential
14883
15976
  * @secure
14884
15977
  */
14885
- 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, 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, any>>;
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>>;
14886
15979
  /**
14887
15980
  * No description
14888
15981
  *
@@ -14939,7 +16032,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14939
16032
  * @format date-time
14940
16033
  */
14941
16034
  updatedAtLe?: string;
14942
- }, 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)[], any>>;
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>>;
14943
16036
  /**
14944
16037
  * No description
14945
16038
  *
@@ -14949,7 +16042,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14949
16042
  * @request GET:/credential/{id}
14950
16043
  * @secure
14951
16044
  */
14952
- 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, any>>;
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>>;
14953
16046
  /**
14954
16047
  * No description
14955
16048
  *
@@ -14959,7 +16052,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14959
16052
  * @request PATCH:/credential/{id}
14960
16053
  * @secure
14961
16054
  */
14962
- 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, 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, any>>;
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>>;
14963
16056
  /**
14964
16057
  * No description
14965
16058
  *
@@ -14969,7 +16062,36 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14969
16062
  * @request DELETE:/credential/{id}
14970
16063
  * @secure
14971
16064
  */
14972
- 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, any>>;
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>>;
16066
+ /**
16067
+ * No description
16068
+ *
16069
+ * @tags Credentials
16070
+ * @name CredentialControllerGenerateSession
16071
+ * @summary Generate a credential session
16072
+ * @request POST:/credential/session
16073
+ * @secure
16074
+ */
16075
+ credentialControllerGenerateSession: (data: CredentialSessionDTO, params?: RequestParams) => Promise<HttpResponse<CredentialSessionResponse, any>>;
16076
+ /**
16077
+ * No description
16078
+ *
16079
+ * @tags Credentials
16080
+ * @name CredentialControllerHandleWebhook
16081
+ * @summary Handle credential webhook
16082
+ * @request POST:/credential/webhook
16083
+ */
16084
+ credentialControllerHandleWebhook: (data: CredentialWebhookDTO, params?: RequestParams) => Promise<HttpResponse<void, any>>;
16085
+ /**
16086
+ * No description
16087
+ *
16088
+ * @tags Credentials
16089
+ * @name CredentialControllerTriggerCredentialAction
16090
+ * @summary Trigger a credential action
16091
+ * @request POST:/credential/trigger
16092
+ * @secure
16093
+ */
16094
+ credentialControllerTriggerCredentialAction: (data: CredentialActionRequest, params?: RequestParams) => Promise<HttpResponse<void, any>>;
14973
16095
  };
14974
16096
  template: {
14975
16097
  /**
@@ -15093,7 +16215,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15093
16215
  * @request GET:/voice-library/{provider}
15094
16216
  * @secure
15095
16217
  */
15096
- voiceLibraryControllerVoiceGetByProvider: (provider: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neets' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus', query?: {
16218
+ voiceLibraryControllerVoiceGetByProvider: (provider: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame', query?: {
15097
16219
  page?: number;
15098
16220
  keyword?: string;
15099
16221
  language?: string;
@@ -15155,7 +16277,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15155
16277
  * @request GET:/voice-library/{provider}/accents
15156
16278
  * @secure
15157
16279
  */
15158
- voiceLibraryControllerVoiceGetAccentsByProvider: (provider: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neets' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus', params?: RequestParams) => Promise<HttpResponse<VoiceLibrary[], any>>;
16280
+ voiceLibraryControllerVoiceGetAccentsByProvider: (provider: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame', params?: RequestParams) => Promise<HttpResponse<VoiceLibrary[], any>>;
15159
16281
  /**
15160
16282
  * No description
15161
16283
  *
@@ -15165,7 +16287,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15165
16287
  * @request POST:/voice-library/sync/{provider}
15166
16288
  * @secure
15167
16289
  */
15168
- voiceLibraryControllerVoiceLibrarySyncByProvider: (provider: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neets' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus', params?: RequestParams) => Promise<HttpResponse<VoiceLibrary[], any>>;
16290
+ voiceLibraryControllerVoiceLibrarySyncByProvider: (provider: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame', params?: RequestParams) => Promise<HttpResponse<VoiceLibrary[], any>>;
15169
16291
  /**
15170
16292
  * No description
15171
16293
  *
@@ -15186,7 +16308,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15186
16308
  * @request GET:/{provider}/workflows
15187
16309
  * @secure
15188
16310
  */
15189
- providerControllerGetWorkflows: (provider: 'make' | 'ghl', query?: {
16311
+ providerControllerGetWorkflows: (provider: 'make' | 'ghl' | 'google.calendar', query?: {
15190
16312
  locationId?: string;
15191
16313
  }, params?: RequestParams) => Promise<HttpResponse<object, any>>;
15192
16314
  /**
@@ -15197,7 +16319,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15197
16319
  * @request GET:/{provider}/workflows/{workflowId}/hooks
15198
16320
  * @secure
15199
16321
  */
15200
- providerControllerGetWorkflowTriggerHook: (provider: 'make' | 'ghl', workflowId: string, params?: RequestParams) => Promise<HttpResponse<object, any>>;
16322
+ providerControllerGetWorkflowTriggerHook: (provider: 'make' | 'ghl' | 'google.calendar', workflowId: string, params?: RequestParams) => Promise<HttpResponse<object, any>>;
15201
16323
  /**
15202
16324
  * No description
15203
16325
  *
@@ -15206,7 +16328,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15206
16328
  * @request GET:/{provider}/locations
15207
16329
  * @secure
15208
16330
  */
15209
- providerControllerGetLocations: (provider: 'make' | 'ghl', params?: RequestParams) => Promise<HttpResponse<object, any>>;
16331
+ providerControllerGetLocations: (provider: 'make' | 'ghl' | 'google.calendar', params?: RequestParams) => Promise<HttpResponse<object, any>>;
15210
16332
  /**
15211
16333
  * No description
15212
16334
  *