@vapi-ai/web 2.2.5 → 2.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.d.ts CHANGED
@@ -1,3 +1,189 @@
1
+ export interface AnalysisCostBreakdown {
2
+ /** This is the cost to summarize the call. */
3
+ summary?: number;
4
+ /** This is the number of prompt tokens used to summarize the call. */
5
+ summaryPromptTokens?: number;
6
+ /** This is the number of completion tokens used to summarize the call. */
7
+ summaryCompletionTokens?: number;
8
+ /** This is the cost to extract structured data from the call. */
9
+ structuredData?: number;
10
+ /** This is the number of prompt tokens used to extract structured data from the call. */
11
+ structuredDataPromptTokens?: number;
12
+ /** This is the number of completion tokens used to extract structured data from the call. */
13
+ structuredDataCompletionTokens?: number;
14
+ /** This is the cost to evaluate if the call was successful. */
15
+ successEvaluation?: number;
16
+ /** This is the number of prompt tokens used to evaluate if the call was successful. */
17
+ successEvaluationPromptTokens?: number;
18
+ /** This is the number of completion tokens used to evaluate if the call was successful. */
19
+ successEvaluationCompletionTokens?: number;
20
+ }
21
+ export interface CostBreakdown {
22
+ /** This is the cost of the transport provider, like Twilio or Vonage. */
23
+ transport?: number;
24
+ /** This is the cost of the speech-to-text service. */
25
+ stt?: number;
26
+ /** This is the cost of the language model. */
27
+ llm?: number;
28
+ /** This is the cost of the text-to-speech service. */
29
+ tts?: number;
30
+ /** This is the cost of Vapi. */
31
+ vapi?: number;
32
+ /** This is the total cost of the call. */
33
+ total?: number;
34
+ /** This is the LLM prompt tokens used for the call. */
35
+ llmPromptTokens?: number;
36
+ /** This is the LLM completion tokens used for the call. */
37
+ llmCompletionTokens?: number;
38
+ /** This is the TTS characters used for the call. */
39
+ ttsCharacters?: number;
40
+ /** This is the cost of the analysis. */
41
+ analysisCostBreakdown?: AnalysisCostBreakdown;
42
+ }
43
+ export interface TranscriptPlan {
44
+ /**
45
+ * This determines whether the transcript is stored in `call.artifact.transcript`. Defaults to true.
46
+ *
47
+ * @default true
48
+ * @example true
49
+ */
50
+ enabled?: boolean;
51
+ /**
52
+ * This is the name of the assistant in the transcript. Defaults to 'AI'.
53
+ *
54
+ * Usage:
55
+ * - If you want to change the name of the assistant in the transcript, set this. Example, here is what the transcript would look like with `assistantName` set to 'Buyer':
56
+ * ```
57
+ * User: Hello, how are you?
58
+ * Buyer: I'm fine.
59
+ * User: Do you want to buy a car?
60
+ * Buyer: No.
61
+ * ```
62
+ *
63
+ * @default 'AI'
64
+ */
65
+ assistantName?: string;
66
+ /**
67
+ * This is the name of the user in the transcript. Defaults to 'User'.
68
+ *
69
+ * Usage:
70
+ * - If you want to change the name of the user in the transcript, set this. Example, here is what the transcript would look like with `userName` set to 'Seller':
71
+ * ```
72
+ * Seller: Hello, how are you?
73
+ * AI: I'm fine.
74
+ * Seller: Do you want to buy a car?
75
+ * AI: No.
76
+ * ```
77
+ *
78
+ * @default 'User'
79
+ */
80
+ userName?: string;
81
+ }
82
+ export interface ArtifactPlan {
83
+ /**
84
+ * This determines whether assistant's calls are recorded. Defaults to true.
85
+ *
86
+ * Usage:
87
+ * - If you don't want to record the calls, set this to false.
88
+ * - If you want to record the calls when `assistant.hipaaEnabled` (deprecated) or `assistant.compliancePlan.hipaaEnabled` explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.
89
+ *
90
+ * You can find the recording at `call.artifact.recordingUrl` and `call.artifact.stereoRecordingUrl` after the call is ended.
91
+ *
92
+ * @default true
93
+ * @example true
94
+ */
95
+ recordingEnabled?: boolean;
96
+ /**
97
+ * This determines the format of the recording. Defaults to `wav;l16`.
98
+ *
99
+ * @default 'wav;l16'
100
+ */
101
+ recordingFormat?: 'wav;l16' | 'mp3';
102
+ /**
103
+ * This determines whether the video is recorded during the call. Defaults to false. Only relevant for `webCall` type.
104
+ *
105
+ * You can find the video recording at `call.artifact.videoRecordingUrl` after the call is ended.
106
+ *
107
+ * @default false
108
+ * @example false
109
+ */
110
+ videoRecordingEnabled?: boolean;
111
+ /**
112
+ * This determines whether the SIP packet capture is enabled. Defaults to true. Only relevant for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`.
113
+ *
114
+ * You can find the packet capture at `call.artifact.pcapUrl` after the call is ended.
115
+ *
116
+ * @default true
117
+ * @example true
118
+ */
119
+ pcapEnabled?: boolean;
120
+ /**
121
+ * This is the path where the SIP packet capture will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
122
+ *
123
+ * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
124
+ *
125
+ * Usage:
126
+ * - If you want to upload the packet capture to a specific path, set this to the path. Example: `/my-assistant-captures`.
127
+ * - If you want to upload the packet capture to the root of the bucket, set this to `/`.
128
+ *
129
+ * @default '/'
130
+ * @example "/pcaps"
131
+ */
132
+ pcapS3PathPrefix?: string;
133
+ /** This is the plan for `call.artifact.transcript`. To disable, set `transcriptPlan.enabled` to false. */
134
+ transcriptPlan?: TranscriptPlan;
135
+ /**
136
+ * This is the path where the recording will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
137
+ *
138
+ * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
139
+ *
140
+ * Usage:
141
+ * - If you want to upload the recording to a specific path, set this to the path. Example: `/my-assistant-recordings`.
142
+ * - If you want to upload the recording to the root of the bucket, set this to `/`.
143
+ *
144
+ * @default '/'
145
+ */
146
+ recordingPath?: string;
147
+ }
148
+ export interface Analysis {
149
+ /** This is the summary of the call. Customize by setting `assistant.analysisPlan.summaryPrompt`. */
150
+ summary?: string;
151
+ /** This is the structured data extracted from the call. Customize by setting `assistant.analysisPlan.structuredDataPrompt` and/or `assistant.analysisPlan.structuredDataSchema`. */
152
+ structuredData?: object;
153
+ /** This is the structured data catalog of the call. Customize by setting `assistant.analysisPlan.structuredDataMultiPlan`. */
154
+ structuredDataMulti?: object[];
155
+ /** This is the evaluation of the call. Customize by setting `assistant.analysisPlan.successEvaluationPrompt` and/or `assistant.analysisPlan.successEvaluationRubric`. */
156
+ successEvaluation?: string;
157
+ }
158
+ export interface Monitor {
159
+ /** This is the URL where the assistant's calls can be listened to in real-time. To enable, set `assistant.monitorPlan.listenEnabled` to `true`. */
160
+ listenUrl?: string;
161
+ /** This is the URL where the assistant's calls can be controlled in real-time. To enable, set `assistant.monitorPlan.controlEnabled` to `true`. */
162
+ controlUrl?: string;
163
+ }
164
+ export interface OpenAIMessage {
165
+ /** @maxLength 100000000 */
166
+ content: string | null;
167
+ role: 'assistant' | 'function' | 'user' | 'system' | 'tool';
168
+ }
169
+ export interface Artifact {
170
+ /** These are the messages that were spoken during the call. */
171
+ messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
172
+ /** These are the messages that were spoken during the call, formatted for OpenAI. */
173
+ messagesOpenAIFormatted?: OpenAIMessage[];
174
+ /** This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
175
+ recordingUrl?: string;
176
+ /** This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
177
+ stereoRecordingUrl?: string;
178
+ /** This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. */
179
+ videoRecordingUrl?: string;
180
+ /** This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps. */
181
+ videoRecordingStartDelaySeconds?: number;
182
+ /** This is the transcript of the call. This is derived from `artifact.messages` but provided for convenience. */
183
+ transcript?: string;
184
+ /** This is the packet capture url for the call. This is only available for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`. */
185
+ pcapUrl?: string;
186
+ }
1
187
  export interface FallbackTranscriberPlan {
2
188
  transcribers: (FallbackAssemblyAITranscriber | FallbackAzureSpeechTranscriber | FallbackCustomTranscriber | FallbackDeepgramTranscriber | FallbackElevenLabsTranscriber | FallbackGladiaTranscriber | FallbackGoogleTranscriber | FallbackTalkscriberTranscriber | FallbackSpeechmaticsTranscriber | FallbackOpenAITranscriber)[];
3
189
  }
@@ -6,6 +192,15 @@ export interface AssemblyAITranscriber {
6
192
  provider: 'assembly-ai';
7
193
  /** This is the language that will be set for the transcription. */
8
194
  language?: 'en';
195
+ /**
196
+ * Transcripts below this confidence threshold will be discarded.
197
+ *
198
+ * @default 0.4
199
+ * @min 0
200
+ * @max 1
201
+ * @example 0.4
202
+ */
203
+ confidenceThreshold?: number;
9
204
  /** The WebSocket URL that the transcriber connects to. */
10
205
  realtimeUrl?: string;
11
206
  /** Add up to 2500 characters of custom vocabulary. */
@@ -131,7 +326,7 @@ export interface DeepgramTranscriber {
131
326
  /** This is the transcription provider that will be used. */
132
327
  provider: 'deepgram';
133
328
  /** This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview */
134
- model?: 'nova-3' | 'nova-3-general' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
329
+ model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
135
330
  /** This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview */
136
331
  language?: 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
137
332
  /**
@@ -191,6 +386,15 @@ export interface DeepgramTranscriber {
191
386
  * @example false
192
387
  */
193
388
  numerals?: boolean;
389
+ /**
390
+ * Transcripts below this confidence threshold will be discarded.
391
+ *
392
+ * @default 0.4
393
+ * @min 0
394
+ * @max 1
395
+ * @example 0.4
396
+ */
397
+ confidenceThreshold?: number;
194
398
  /** These keywords are passed to the transcription model to help it pick up use-case specific words. Anything that may not be a common word, like your company name, should be added here. */
195
399
  keywords?: string[];
196
400
  /** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
@@ -246,6 +450,15 @@ export interface GladiaTranscriber {
246
450
  * @example false
247
451
  */
248
452
  audioEnhancer?: boolean;
453
+ /**
454
+ * Transcripts below this confidence threshold will be discarded.
455
+ *
456
+ * @default 0.4
457
+ * @min 0
458
+ * @max 1
459
+ * @example 0.4
460
+ */
461
+ confidenceThreshold?: number;
249
462
  /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
250
463
  fallbackPlan?: FallbackTranscriberPlan;
251
464
  }
@@ -293,6 +506,15 @@ export interface FallbackAssemblyAITranscriber {
293
506
  provider: 'assembly-ai';
294
507
  /** This is the language that will be set for the transcription. */
295
508
  language?: 'en';
509
+ /**
510
+ * Transcripts below this confidence threshold will be discarded.
511
+ *
512
+ * @default 0.4
513
+ * @min 0
514
+ * @max 1
515
+ * @example 0.4
516
+ */
517
+ confidenceThreshold?: number;
296
518
  /** The WebSocket URL that the transcriber connects to. */
297
519
  realtimeUrl?: string;
298
520
  /** Add up to 2500 characters of custom vocabulary. */
@@ -360,7 +582,7 @@ export interface FallbackDeepgramTranscriber {
360
582
  /** This is the transcription provider that will be used. */
361
583
  provider: 'deepgram';
362
584
  /** This is the Deepgram model that will be used. A list of models can be found here: https://developers.deepgram.com/docs/models-languages-overview */
363
- model?: 'nova-3' | 'nova-3-general' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
585
+ model?: 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-phonecall' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'base-general' | 'base-meeting' | 'base-phonecall' | 'base-finance' | 'base-conversationalai' | 'base-voicemail' | 'base-video' | string;
364
586
  /** This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview */
365
587
  language?: 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'ta' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW';
366
588
  /**
@@ -420,6 +642,15 @@ export interface FallbackDeepgramTranscriber {
420
642
  * @example false
421
643
  */
422
644
  numerals?: boolean;
645
+ /**
646
+ * Transcripts below this confidence threshold will be discarded.
647
+ *
648
+ * @default 0.4
649
+ * @min 0
650
+ * @max 1
651
+ * @example 0.4
652
+ */
653
+ confidenceThreshold?: number;
423
654
  /** These keywords are passed to the transcription model to help it pick up use-case specific words. Anything that may not be a common word, like your company name, should be added here. */
424
655
  keywords?: string[];
425
656
  /** Keyterm Prompting allows you improve Keyword Recall Rate (KRR) for important keyterms or phrases up to 90%. */
@@ -471,6 +702,15 @@ export interface FallbackGladiaTranscriber {
471
702
  * @example false
472
703
  */
473
704
  audioEnhancer?: boolean;
705
+ /**
706
+ * Transcripts below this confidence threshold will be discarded.
707
+ *
708
+ * @default 0.4
709
+ * @min 0
710
+ * @max 1
711
+ * @example 0.4
712
+ */
713
+ confidenceThreshold?: number;
474
714
  }
475
715
  export interface FallbackSpeechmaticsTranscriber {
476
716
  /** This is the transcription provider that will be used. */
@@ -1425,33 +1665,233 @@ export interface CreateCustomKnowledgeBaseDTO {
1425
1665
  */
1426
1666
  server: Server;
1427
1667
  }
1428
- export interface OpenAIMessage {
1429
- /** @maxLength 100000000 */
1430
- content: string | null;
1431
- role: 'assistant' | 'function' | 'user' | 'system' | 'tool';
1432
- }
1433
- export interface AnyscaleModel {
1434
- /** This is the starting state for the conversation. */
1435
- messages?: OpenAIMessage[];
1668
+ export interface KnowledgeBase {
1436
1669
  /**
1437
- * These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
1438
- *
1439
- * Both `tools` and `toolIds` can be used together.
1670
+ * The name of the knowledge base
1671
+ * @example "My Knowledge Base"
1440
1672
  */
1441
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1673
+ name: string;
1442
1674
  /**
1443
- * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1444
- *
1445
- * Both `tools` and `toolIds` can be used together.
1675
+ * The provider of the knowledge base
1676
+ * @example "google"
1446
1677
  */
1447
- toolIds?: string[];
1448
- /** These are the options for the knowledge base. */
1449
- knowledgeBase?: CreateCustomKnowledgeBaseDTO;
1450
- /** This is the ID of the knowledge base the model will use. */
1451
- knowledgeBaseId?: string;
1452
- provider: 'anyscale';
1453
- /** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
1454
- model: string;
1678
+ provider: 'google';
1679
+ /** The model to use for the knowledge base */
1680
+ model?: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
1681
+ /** A description of the knowledge base */
1682
+ description: string;
1683
+ /** The file IDs associated with this knowledge base */
1684
+ fileIds: string[];
1685
+ }
1686
+ export interface CreateQueryToolDTO {
1687
+ /**
1688
+ * This determines if the tool is async.
1689
+ *
1690
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1691
+ *
1692
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1693
+ *
1694
+ * Defaults to synchronous (`false`).
1695
+ * @example false
1696
+ */
1697
+ async?: boolean;
1698
+ /**
1699
+ * These are the messages that will be spoken to the user as the tool is running.
1700
+ *
1701
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1702
+ */
1703
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1704
+ /** The type of tool. "query" for Query tool. */
1705
+ type: 'query';
1706
+ /** The knowledge bases to query */
1707
+ knowledgeBases?: KnowledgeBase[];
1708
+ /**
1709
+ * This is the function definition of the tool.
1710
+ *
1711
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1712
+ *
1713
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1714
+ */
1715
+ function?: OpenAIFunction;
1716
+ /**
1717
+ * This is the server that will be hit when this tool is requested by the model.
1718
+ *
1719
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1720
+ *
1721
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1722
+ */
1723
+ server?: Server;
1724
+ }
1725
+ export interface CreateGoogleCalendarCreateEventToolDTO {
1726
+ /**
1727
+ * This determines if the tool is async.
1728
+ *
1729
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1730
+ *
1731
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1732
+ *
1733
+ * Defaults to synchronous (`false`).
1734
+ * @example false
1735
+ */
1736
+ async?: boolean;
1737
+ /**
1738
+ * These are the messages that will be spoken to the user as the tool is running.
1739
+ *
1740
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1741
+ */
1742
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1743
+ /** The type of tool. "google.calendar.event.create" for Google Calendar tool. */
1744
+ type: 'google.calendar.event.create';
1745
+ /**
1746
+ * This is the function definition of the tool.
1747
+ *
1748
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1749
+ *
1750
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1751
+ */
1752
+ function?: OpenAIFunction;
1753
+ /**
1754
+ * This is the server that will be hit when this tool is requested by the model.
1755
+ *
1756
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1757
+ *
1758
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1759
+ */
1760
+ server?: Server;
1761
+ }
1762
+ export interface CreateGoogleSheetsRowAppendToolDTO {
1763
+ /**
1764
+ * This determines if the tool is async.
1765
+ *
1766
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1767
+ *
1768
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1769
+ *
1770
+ * Defaults to synchronous (`false`).
1771
+ * @example false
1772
+ */
1773
+ async?: boolean;
1774
+ /**
1775
+ * These are the messages that will be spoken to the user as the tool is running.
1776
+ *
1777
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1778
+ */
1779
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1780
+ /** The type of tool. "google.sheets.row.append" for Google Sheets tool. */
1781
+ type: 'google.sheets.row.append';
1782
+ /**
1783
+ * This is the function definition of the tool.
1784
+ *
1785
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1786
+ *
1787
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1788
+ */
1789
+ function?: OpenAIFunction;
1790
+ /**
1791
+ * This is the server that will be hit when this tool is requested by the model.
1792
+ *
1793
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1794
+ *
1795
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1796
+ */
1797
+ server?: Server;
1798
+ }
1799
+ export interface CreateGoogleCalendarCheckAvailabilityToolDTO {
1800
+ /**
1801
+ * This determines if the tool is async.
1802
+ *
1803
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1804
+ *
1805
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1806
+ *
1807
+ * Defaults to synchronous (`false`).
1808
+ * @example false
1809
+ */
1810
+ async?: boolean;
1811
+ /**
1812
+ * These are the messages that will be spoken to the user as the tool is running.
1813
+ *
1814
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1815
+ */
1816
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1817
+ /** The type of tool. "google.calendar.availability.check" for Google Calendar availability check tool. */
1818
+ type: 'google.calendar.availability.check';
1819
+ /**
1820
+ * This is the function definition of the tool.
1821
+ *
1822
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1823
+ *
1824
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1825
+ */
1826
+ function?: OpenAIFunction;
1827
+ /**
1828
+ * This is the server that will be hit when this tool is requested by the model.
1829
+ *
1830
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1831
+ *
1832
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1833
+ */
1834
+ server?: Server;
1835
+ }
1836
+ export interface CreateSlackSendMessageToolDTO {
1837
+ /**
1838
+ * This determines if the tool is async.
1839
+ *
1840
+ * If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
1841
+ *
1842
+ * If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
1843
+ *
1844
+ * Defaults to synchronous (`false`).
1845
+ * @example false
1846
+ */
1847
+ async?: boolean;
1848
+ /**
1849
+ * These are the messages that will be spoken to the user as the tool is running.
1850
+ *
1851
+ * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
1852
+ */
1853
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
1854
+ /** The type of tool. "slack.message.send" for Slack send message tool. */
1855
+ type: 'slack.message.send';
1856
+ /**
1857
+ * This is the function definition of the tool.
1858
+ *
1859
+ * For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
1860
+ *
1861
+ * An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
1862
+ */
1863
+ function?: OpenAIFunction;
1864
+ /**
1865
+ * This is the server that will be hit when this tool is requested by the model.
1866
+ *
1867
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
1868
+ *
1869
+ * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
1870
+ */
1871
+ server?: Server;
1872
+ }
1873
+ export interface AnyscaleModel {
1874
+ /** This is the starting state for the conversation. */
1875
+ messages?: OpenAIMessage[];
1876
+ /**
1877
+ * These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.
1878
+ *
1879
+ * Both `tools` and `toolIds` can be used together.
1880
+ */
1881
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1882
+ /**
1883
+ * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1884
+ *
1885
+ * Both `tools` and `toolIds` can be used together.
1886
+ */
1887
+ toolIds?: string[];
1888
+ /** These are the options for the knowledge base. */
1889
+ knowledgeBase?: CreateCustomKnowledgeBaseDTO;
1890
+ /** This is the ID of the knowledge base the model will use. */
1891
+ knowledgeBaseId?: string;
1892
+ provider: 'anyscale';
1893
+ /** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */
1894
+ model: string;
1455
1895
  /**
1456
1896
  * This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
1457
1897
  * @min 0
@@ -1500,7 +1940,7 @@ export interface AnthropicModel {
1500
1940
  *
1501
1941
  * Both `tools` and `toolIds` can be used together.
1502
1942
  */
1503
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
1943
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1504
1944
  /**
1505
1945
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1506
1946
  *
@@ -1559,7 +1999,7 @@ export interface CerebrasModel {
1559
1999
  *
1560
2000
  * Both `tools` and `toolIds` can be used together.
1561
2001
  */
1562
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2002
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1563
2003
  /**
1564
2004
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1565
2005
  *
@@ -1611,7 +2051,7 @@ export interface CustomLLMModel {
1611
2051
  *
1612
2052
  * Both `tools` and `toolIds` can be used together.
1613
2053
  */
1614
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2054
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1615
2055
  /**
1616
2056
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1617
2057
  *
@@ -1684,7 +2124,7 @@ export interface DeepInfraModel {
1684
2124
  *
1685
2125
  * Both `tools` and `toolIds` can be used together.
1686
2126
  */
1687
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2127
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1688
2128
  /**
1689
2129
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1690
2130
  *
@@ -1736,7 +2176,7 @@ export interface DeepSeekModel {
1736
2176
  *
1737
2177
  * Both `tools` and `toolIds` can be used together.
1738
2178
  */
1739
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2179
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1740
2180
  /**
1741
2181
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1742
2182
  *
@@ -1824,7 +2264,7 @@ export interface GoogleModel {
1824
2264
  *
1825
2265
  * Both `tools` and `toolIds` can be used together.
1826
2266
  */
1827
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2267
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1828
2268
  /**
1829
2269
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1830
2270
  *
@@ -1881,7 +2321,7 @@ export interface GroqModel {
1881
2321
  *
1882
2322
  * Both `tools` and `toolIds` can be used together.
1883
2323
  */
1884
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2324
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1885
2325
  /**
1886
2326
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1887
2327
  *
@@ -1933,7 +2373,7 @@ export interface InflectionAIModel {
1933
2373
  *
1934
2374
  * Both `tools` and `toolIds` can be used together.
1935
2375
  */
1936
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2376
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1937
2377
  /**
1938
2378
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1939
2379
  *
@@ -1985,7 +2425,7 @@ export interface OpenAIModel {
1985
2425
  *
1986
2426
  * Both `tools` and `toolIds` can be used together.
1987
2427
  */
1988
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2428
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
1989
2429
  /**
1990
2430
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
1991
2431
  *
@@ -1999,12 +2439,12 @@ export interface OpenAIModel {
1999
2439
  /** This is the provider that will be used for the model. */
2000
2440
  provider: 'openai';
2001
2441
  /** This is the OpenAI model that will be used. */
2002
- model: 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
2442
+ model: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
2003
2443
  /**
2004
2444
  * These are the fallback models that will be used if the primary model fails. This shouldn't be specified unless you have a specific reason to do so. Vapi will automatically find the fastest fallbacks that make sense.
2005
2445
  * @example ["gpt-4-0125-preview","gpt-4-0613"]
2006
2446
  */
2007
- fallbackModels?: 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
2447
+ fallbackModels?: 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.5-preview' | 'chatgpt-4o-latest' | 'o3-mini' | 'o1-preview' | 'o1-preview-2024-09-12' | 'o1-mini' | 'o1-mini-2024-09-12' | 'gpt-4o-realtime-preview-2024-10-01' | 'gpt-4o-realtime-preview-2024-12-17' | 'gpt-4o-mini-realtime-preview-2024-12-17' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'gpt-3.5-turbo-16k' | 'gpt-3.5-turbo-0613';
2008
2448
  /**
2009
2449
  * This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.
2010
2450
  * @min 0
@@ -2043,7 +2483,7 @@ export interface OpenRouterModel {
2043
2483
  *
2044
2484
  * Both `tools` and `toolIds` can be used together.
2045
2485
  */
2046
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2486
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2047
2487
  /**
2048
2488
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2049
2489
  *
@@ -2095,7 +2535,7 @@ export interface PerplexityAIModel {
2095
2535
  *
2096
2536
  * Both `tools` and `toolIds` can be used together.
2097
2537
  */
2098
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2538
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2099
2539
  /**
2100
2540
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2101
2541
  *
@@ -2147,7 +2587,7 @@ export interface TogetherAIModel {
2147
2587
  *
2148
2588
  * Both `tools` and `toolIds` can be used together.
2149
2589
  */
2150
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2590
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2151
2591
  /**
2152
2592
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2153
2593
  *
@@ -2193,8 +2633,11 @@ export interface TogetherAIModel {
2193
2633
  }
2194
2634
  export interface AIEdgeCondition {
2195
2635
  type: 'ai';
2196
- /** @maxLength 100 */
2197
- matches: string[];
2636
+ /**
2637
+ * This is the prompt for the AI edge condition. It should evaluate to a boolean.
2638
+ * @maxLength 1000
2639
+ */
2640
+ prompt: string;
2198
2641
  }
2199
2642
  export interface LogicEdgeCondition {
2200
2643
  type: 'logic';
@@ -2215,6 +2658,8 @@ export interface Edge {
2215
2658
  }
2216
2659
  export interface Workflow {
2217
2660
  nodes: (Say | Gather | ApiRequest | Hangup | Transfer)[];
2661
+ /** These are the options for the workflow's LLM. */
2662
+ model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
2218
2663
  id: string;
2219
2664
  orgId: string;
2220
2665
  /** @format date-time */
@@ -2233,7 +2678,7 @@ export interface VapiModel {
2233
2678
  *
2234
2679
  * Both `tools` and `toolIds` can be used together.
2235
2680
  */
2236
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2681
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2237
2682
  /**
2238
2683
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2239
2684
  *
@@ -2289,7 +2734,7 @@ export interface XaiModel {
2289
2734
  *
2290
2735
  * Both `tools` and `toolIds` can be used together.
2291
2736
  */
2292
- tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO)[];
2737
+ tools?: (CreateDtmfToolDTO | CreateEndCallToolDTO | CreateVoicemailToolDTO | CreateFunctionToolDTO | CreateGhlToolDTO | CreateMakeToolDTO | CreateTransferCallToolDTO | CreateQueryToolDTO | CreateGoogleCalendarCreateEventToolDTO | CreateGoogleSheetsRowAppendToolDTO | CreateGoogleCalendarCheckAvailabilityToolDTO | CreateSlackSendMessageToolDTO)[];
2293
2738
  /**
2294
2739
  * These are the tools that the assistant can use during the call. To use transient tools, use `tools`.
2295
2740
  *
@@ -2345,6 +2790,15 @@ export interface ExactReplacement {
2345
2790
  * - Replace a company name with its phonetic pronunciation: { type: 'exact', key: 'Vapi', value: 'Vappy' }
2346
2791
  */
2347
2792
  type: 'exact';
2793
+ /**
2794
+ * This option let's you control whether to replace all instances of the key or only the first one. By default, it only replaces the first instance.
2795
+ * Examples:
2796
+ * - For { type: 'exact', key: 'hello', value: 'hi', replaceAllEnabled: false }. Before: "hello world, hello universe" | After: "hi world, hello universe"
2797
+ * - For { type: 'exact', key: 'hello', value: 'hi', replaceAllEnabled: true }. Before: "hello world, hello universe" | After: "hi world, hi universe"
2798
+ * @default false
2799
+ * @default false
2800
+ */
2801
+ replaceAllEnabled?: boolean;
2348
2802
  /** This is the key to replace. */
2349
2803
  key: string;
2350
2804
  /**
@@ -2510,8 +2964,7 @@ export interface AzureVoice {
2510
2964
  fallbackPlan?: FallbackPlan;
2511
2965
  }
2512
2966
  export interface CartesiaExperimentalControls {
2513
- /** @example "normal" */
2514
- speed?: 'slowest' | 'slow' | 'normal' | 'fast' | 'fastest';
2967
+ speed?: 'slowest' | 'slow' | 'normal' | 'fast' | 'fastest' | number;
2515
2968
  /** @example ["happiness:high"] */
2516
2969
  emotion?: 'anger:lowest' | 'anger:low' | 'anger:high' | 'anger:highest' | 'positivity:lowest' | 'positivity:low' | 'positivity:high' | 'positivity:highest' | 'surprise:lowest' | 'surprise:low' | 'surprise:high' | 'surprise:highest' | 'sadness:lowest' | 'sadness:low' | 'sadness:high' | 'sadness:highest' | 'curiosity:lowest' | 'curiosity:low' | 'curiosity:high' | 'curiosity:highest';
2517
2970
  }
@@ -2573,8 +3026,16 @@ export interface CustomVoice {
2573
3026
  export interface DeepgramVoice {
2574
3027
  /** This is the voice provider that will be used. */
2575
3028
  provider: 'deepgram';
2576
- /** This is the provider-specific ID that will be used. */
2577
- voiceId: 'asteria' | 'luna' | 'stella' | 'athena' | 'hera' | 'orion' | 'arcas' | 'perseus' | 'angus' | 'orpheus' | 'helios' | 'zeus' | string;
3029
+ /**
3030
+ * This is the Deepgram Voice ID
3031
+ * This is the provider-specific ID that will be used.
3032
+ */
3033
+ voiceId: 'asteria' | 'luna' | 'stella' | 'athena' | 'hera' | 'orion' | 'arcas' | 'perseus' | 'angus' | 'orpheus' | 'helios' | 'zeus' | 'thalia' | 'andromeda' | 'helena' | 'apollo' | 'aries' | 'amalthea' | 'atlas' | 'aurora' | 'callista' | 'cora' | 'cordelia' | 'delia' | 'draco' | 'electra' | 'harmonia' | 'hermes' | 'hyperion' | 'iris' | 'janus' | 'juno' | 'jupiter' | 'mars' | 'minerva' | 'neptune' | 'odysseus' | 'ophelia' | 'pandora' | 'phoebe' | 'pluto' | 'saturn' | 'selene' | 'theia' | 'vesta';
3034
+ /**
3035
+ * This is the model that will be used. Defaults to 'aura-2' when not specified.
3036
+ * @example "aura-2"
3037
+ */
3038
+ model?: 'aura' | 'aura-2';
2578
3039
  /**
2579
3040
  * If set to true, this will add mip_opt_out=true as a query parameter of all API requests. See https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program#want-to-opt-out
2580
3041
  *
@@ -2642,6 +3103,11 @@ export interface ElevenLabsVoice {
2642
3103
  * @example false
2643
3104
  */
2644
3105
  enableSsmlParsing?: boolean;
3106
+ /**
3107
+ * Defines the auto mode for voice settings. Defaults to false.
3108
+ * @example false
3109
+ */
3110
+ autoMode?: boolean;
2645
3111
  /**
2646
3112
  * This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified.
2647
3113
  * @example "eleven_turbo_v2_5"
@@ -2732,7 +3198,7 @@ export interface OpenAIVoice {
2732
3198
  * This is the provider-specific ID that will be used.
2733
3199
  * Please note that ash, ballad, coral, sage, and verse may only be used with realtime models.
2734
3200
  */
2735
- voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | 'ash' | 'ballad' | 'coral' | 'sage' | 'verse';
3201
+ voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | string;
2736
3202
  /** This is the model that will be used for text-to-speech. */
2737
3203
  model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
2738
3204
  /**
@@ -3021,8 +3487,16 @@ export interface FallbackCustomVoice {
3021
3487
  export interface FallbackDeepgramVoice {
3022
3488
  /** This is the voice provider that will be used. */
3023
3489
  provider: 'deepgram';
3024
- /** This is the provider-specific ID that will be used. */
3025
- voiceId: 'asteria' | 'luna' | 'stella' | 'athena' | 'hera' | 'orion' | 'arcas' | 'perseus' | 'angus' | 'orpheus' | 'helios' | 'zeus' | string;
3490
+ /**
3491
+ * This is the Deepgram Voice ID
3492
+ * This is the provider-specific ID that will be used.
3493
+ */
3494
+ voiceId: 'asteria' | 'luna' | 'stella' | 'athena' | 'hera' | 'orion' | 'arcas' | 'perseus' | 'angus' | 'orpheus' | 'helios' | 'zeus' | 'thalia' | 'andromeda' | 'helena' | 'apollo' | 'aries' | 'amalthea' | 'atlas' | 'aurora' | 'callista' | 'cora' | 'cordelia' | 'delia' | 'draco' | 'electra' | 'harmonia' | 'hermes' | 'hyperion' | 'iris' | 'janus' | 'juno' | 'jupiter' | 'mars' | 'minerva' | 'neptune' | 'odysseus' | 'ophelia' | 'pandora' | 'phoebe' | 'pluto' | 'saturn' | 'selene' | 'theia' | 'vesta';
3495
+ /**
3496
+ * This is the model that will be used. Defaults to 'aura-2' when not specified.
3497
+ * @example "aura-2"
3498
+ */
3499
+ model?: 'aura' | 'aura-2';
3026
3500
  /**
3027
3501
  * If set to true, this will add mip_opt_out=true as a query parameter of all API requests. See https://developers.deepgram.com/docs/the-deepgram-model-improvement-partnership-program#want-to-opt-out
3028
3502
  *
@@ -3088,6 +3562,11 @@ export interface FallbackElevenLabsVoice {
3088
3562
  * @example false
3089
3563
  */
3090
3564
  enableSsmlParsing?: boolean;
3565
+ /**
3566
+ * Defines the auto mode for voice settings. Defaults to false.
3567
+ * @example false
3568
+ */
3569
+ autoMode?: boolean;
3091
3570
  /**
3092
3571
  * This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified.
3093
3572
  * @example "eleven_turbo_v2_5"
@@ -3170,7 +3649,7 @@ export interface FallbackOpenAIVoice {
3170
3649
  * This is the provider-specific ID that will be used.
3171
3650
  * Please note that ash, ballad, coral, sage, and verse may only be used with realtime models.
3172
3651
  */
3173
- voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | 'ash' | 'ballad' | 'coral' | 'sage' | 'verse';
3652
+ voiceId: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer' | string;
3174
3653
  /** This is the model that will be used for text-to-speech. */
3175
3654
  model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
3176
3655
  /**
@@ -4096,6 +4575,28 @@ export interface CreateGoogleCalendarOAuth2AuthorizationCredentialDTO {
4096
4575
  */
4097
4576
  name?: string;
4098
4577
  }
4578
+ export interface CreateGoogleSheetsOAuth2AuthorizationCredentialDTO {
4579
+ provider: 'google.sheets.oauth2-authorization';
4580
+ /** The authorization ID for the OAuth2 authorization */
4581
+ authorizationId: string;
4582
+ /**
4583
+ * This is the name of credential. This is just for your reference.
4584
+ * @minLength 1
4585
+ * @maxLength 40
4586
+ */
4587
+ name?: string;
4588
+ }
4589
+ export interface CreateSlackOAuth2AuthorizationCredentialDTO {
4590
+ provider: 'slack.oauth2-authorization';
4591
+ /** The authorization ID for the OAuth2 authorization */
4592
+ authorizationId: string;
4593
+ /**
4594
+ * This is the name of credential. This is just for your reference.
4595
+ * @minLength 1
4596
+ * @maxLength 40
4597
+ */
4598
+ name?: string;
4599
+ }
4099
4600
  export interface TransferAssistantHookAction {
4100
4601
  /** This is the type of action - must be "transfer" */
4101
4602
  type: 'transfer';
@@ -4345,112 +4846,7 @@ export interface AnalysisPlan {
4345
4846
  /** This is the plan for generating the success evaluation of the call. This outputs to `call.analysis.successEvaluation`. */
4346
4847
  successEvaluationPlan?: SuccessEvaluationPlan;
4347
4848
  }
4348
- export interface TranscriptPlan {
4349
- /**
4350
- * This determines whether the transcript is stored in `call.artifact.transcript`. Defaults to true.
4351
- *
4352
- * @default true
4353
- * @example true
4354
- */
4355
- enabled?: boolean;
4356
- /**
4357
- * This is the name of the assistant in the transcript. Defaults to 'AI'.
4358
- *
4359
- * Usage:
4360
- * - If you want to change the name of the assistant in the transcript, set this. Example, here is what the transcript would look like with `assistantName` set to 'Buyer':
4361
- * ```
4362
- * User: Hello, how are you?
4363
- * Buyer: I'm fine.
4364
- * User: Do you want to buy a car?
4365
- * Buyer: No.
4366
- * ```
4367
- *
4368
- * @default 'AI'
4369
- */
4370
- assistantName?: string;
4371
- /**
4372
- * This is the name of the user in the transcript. Defaults to 'User'.
4373
- *
4374
- * Usage:
4375
- * - If you want to change the name of the user in the transcript, set this. Example, here is what the transcript would look like with `userName` set to 'Seller':
4376
- * ```
4377
- * Seller: Hello, how are you?
4378
- * AI: I'm fine.
4379
- * Seller: Do you want to buy a car?
4380
- * AI: No.
4381
- * ```
4382
- *
4383
- * @default 'User'
4384
- */
4385
- userName?: string;
4386
- }
4387
- export interface ArtifactPlan {
4388
- /**
4389
- * This determines whether assistant's calls are recorded. Defaults to true.
4390
- *
4391
- * Usage:
4392
- * - If you don't want to record the calls, set this to false.
4393
- * - If you want to record the calls when `assistant.hipaaEnabled` (deprecated) or `assistant.compliancePlan.hipaaEnabled` explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.
4394
- *
4395
- * You can find the recording at `call.artifact.recordingUrl` and `call.artifact.stereoRecordingUrl` after the call is ended.
4396
- *
4397
- * @default true
4398
- * @example true
4399
- */
4400
- recordingEnabled?: boolean;
4401
- /**
4402
- * This determines the format of the recording. Defaults to `wav;l16`.
4403
- *
4404
- * @default 'wav;l16'
4405
- */
4406
- recordingFormat?: 'wav;l16' | 'mp3';
4407
- /**
4408
- * This determines whether the video is recorded during the call. Defaults to false. Only relevant for `webCall` type.
4409
- *
4410
- * You can find the video recording at `call.artifact.videoRecordingUrl` after the call is ended.
4411
- *
4412
- * @default false
4413
- * @example false
4414
- */
4415
- videoRecordingEnabled?: boolean;
4416
- /**
4417
- * This determines whether the SIP packet capture is enabled. Defaults to true. Only relevant for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`.
4418
- *
4419
- * You can find the packet capture at `call.artifact.pcapUrl` after the call is ended.
4420
- *
4421
- * @default true
4422
- * @example true
4423
- */
4424
- pcapEnabled?: boolean;
4425
- /**
4426
- * This is the path where the SIP packet capture will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
4427
- *
4428
- * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
4429
- *
4430
- * Usage:
4431
- * - If you want to upload the packet capture to a specific path, set this to the path. Example: `/my-assistant-captures`.
4432
- * - If you want to upload the packet capture to the root of the bucket, set this to `/`.
4433
- *
4434
- * @default '/'
4435
- * @example "/pcaps"
4436
- */
4437
- pcapS3PathPrefix?: string;
4438
- /** This is the plan for `call.artifact.transcript`. To disable, set `transcriptPlan.enabled` to false. */
4439
- transcriptPlan?: TranscriptPlan;
4440
- /**
4441
- * This is the path where the recording will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.
4442
- *
4443
- * If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.
4444
- *
4445
- * Usage:
4446
- * - If you want to upload the recording to a specific path, set this to the path. Example: `/my-assistant-recordings`.
4447
- * - If you want to upload the recording to the root of the bucket, set this to `/`.
4448
- *
4449
- * @default '/'
4450
- */
4451
- recordingPath?: string;
4452
- }
4453
- export interface MessagePlan {
4849
+ export interface MessagePlan {
4454
4850
  /**
4455
4851
  * This are the messages that the assistant will speak when the user hasn't responded for `idleTimeoutSeconds`. Each time the timeout is triggered, a random message will be chosen from this array.
4456
4852
  *
@@ -4469,6 +4865,12 @@ export interface MessagePlan {
4469
4865
  * @max 10
4470
4866
  */
4471
4867
  idleMessageMaxSpokenCount?: number;
4868
+ /**
4869
+ * This determines whether the idle message count is reset whenever the user speaks.
4870
+ *
4871
+ * @default false
4872
+ */
4873
+ idleMessageResetCountOnUserSpeechEnabled?: boolean;
4472
4874
  /**
4473
4875
  * This is the timeout in seconds before a message from `idleMessages` is spoken. The clock starts when the assistant finishes speaking and remains active until the user speaks.
4474
4876
  *
@@ -4626,13 +5028,13 @@ export interface LivekitSmartEndpointingPlan {
4626
5028
  /**
4627
5029
  * This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.
4628
5030
  *
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).
5031
+ * This is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to milliseconds that the bot should wait before speaking ([0, \infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).
4630
5032
  *
4631
5033
  * 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
5034
  *
4633
5035
  * 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
5036
  *
4635
- * @default "200 + 8000 * x"
5037
+ * @default "70 + 4000 * x"
4636
5038
  */
4637
5039
  waitFunction?: string;
4638
5040
  }
@@ -4903,10 +5305,10 @@ export interface CreateAssistantDTO {
4903
5305
  */
4904
5306
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
4905
5307
  /**
4906
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
4907
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
5308
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
5309
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
4908
5310
  */
4909
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
5311
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
4910
5312
  /**
4911
5313
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
4912
5314
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -4962,7 +5364,101 @@ export interface CreateAssistantDTO {
4962
5364
  */
4963
5365
  observabilityPlan?: LangfuseObservabilityPlan;
4964
5366
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
4965
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
5367
+ credentials?: (({
5368
+ provider: '11labs';
5369
+ } & CreateElevenLabsCredentialDTO) | ({
5370
+ provider: 'anthropic';
5371
+ } & CreateAnthropicCredentialDTO) | ({
5372
+ provider: 'anyscale';
5373
+ } & CreateAnyscaleCredentialDTO) | ({
5374
+ provider: 'assembly-ai';
5375
+ } & CreateAssemblyAICredentialDTO) | ({
5376
+ provider: 'azure-openai';
5377
+ } & CreateAzureOpenAICredentialDTO) | ({
5378
+ provider: 'azure';
5379
+ } & CreateAzureCredentialDTO) | ({
5380
+ provider: 'byo-sip-trunk';
5381
+ } & CreateByoSipTrunkCredentialDTO) | ({
5382
+ provider: 'cartesia';
5383
+ } & CreateCartesiaCredentialDTO) | ({
5384
+ provider: 'cerebras';
5385
+ } & CreateCerebrasCredentialDTO) | ({
5386
+ provider: 'cloudflare';
5387
+ } & CreateCloudflareCredentialDTO) | ({
5388
+ provider: 'custom-llm';
5389
+ } & CreateCustomLLMCredentialDTO) | ({
5390
+ provider: 'deepgram';
5391
+ } & CreateDeepgramCredentialDTO) | ({
5392
+ provider: 'deepinfra';
5393
+ } & CreateDeepInfraCredentialDTO) | ({
5394
+ provider: 'deep-seek';
5395
+ } & CreateDeepSeekCredentialDTO) | ({
5396
+ provider: 'gcp';
5397
+ } & CreateGcpCredentialDTO) | ({
5398
+ provider: 'gladia';
5399
+ } & CreateGladiaCredentialDTO) | ({
5400
+ provider: 'gohighlevel';
5401
+ } & CreateGoHighLevelCredentialDTO) | ({
5402
+ provider: 'google';
5403
+ } & CreateGoogleCredentialDTO) | ({
5404
+ provider: 'groq';
5405
+ } & CreateGroqCredentialDTO) | ({
5406
+ provider: 'inflection-ai';
5407
+ } & CreateInflectionAICredentialDTO) | ({
5408
+ provider: 'langfuse';
5409
+ } & CreateLangfuseCredentialDTO) | ({
5410
+ provider: 'lmnt';
5411
+ } & CreateLmntCredentialDTO) | ({
5412
+ provider: 'make';
5413
+ } & CreateMakeCredentialDTO) | ({
5414
+ provider: 'openai';
5415
+ } & CreateOpenAICredentialDTO) | ({
5416
+ provider: 'openrouter';
5417
+ } & CreateOpenRouterCredentialDTO) | ({
5418
+ provider: 'perplexity-ai';
5419
+ } & CreatePerplexityAICredentialDTO) | ({
5420
+ provider: 'playht';
5421
+ } & CreatePlayHTCredentialDTO) | ({
5422
+ provider: 'rime-ai';
5423
+ } & CreateRimeAICredentialDTO) | ({
5424
+ provider: 'runpod';
5425
+ } & CreateRunpodCredentialDTO) | ({
5426
+ provider: 's3';
5427
+ } & CreateS3CredentialDTO) | ({
5428
+ provider: 'supabase';
5429
+ } & CreateSupabaseCredentialDTO) | ({
5430
+ provider: 'smallest-ai';
5431
+ } & CreateSmallestAICredentialDTO) | ({
5432
+ provider: 'tavus';
5433
+ } & CreateTavusCredentialDTO) | ({
5434
+ provider: 'together-ai';
5435
+ } & CreateTogetherAICredentialDTO) | ({
5436
+ provider: 'twilio';
5437
+ } & CreateTwilioCredentialDTO) | ({
5438
+ provider: 'vonage';
5439
+ } & CreateVonageCredentialDTO) | ({
5440
+ provider: 'webhook';
5441
+ } & CreateWebhookCredentialDTO) | ({
5442
+ provider: 'xai';
5443
+ } & CreateXAiCredentialDTO) | ({
5444
+ provider: 'neuphonic';
5445
+ } & CreateNeuphonicCredentialDTO) | ({
5446
+ provider: 'hume';
5447
+ } & CreateHumeCredentialDTO) | ({
5448
+ provider: 'mistral';
5449
+ } & CreateMistralCredentialDTO) | ({
5450
+ provider: 'speechmatics';
5451
+ } & CreateSpeechmaticsCredentialDTO) | ({
5452
+ provider: 'trieve';
5453
+ } & CreateTrieveCredentialDTO) | ({
5454
+ provider: 'google.calendar.oauth2-client';
5455
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
5456
+ provider: 'google.calendar.oauth2-authorization';
5457
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
5458
+ provider: 'google.sheets.oauth2-authorization';
5459
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
5460
+ provider: 'slack.oauth2-authorization';
5461
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
4966
5462
  /**
4967
5463
  * This is the name of the assistant.
4968
5464
  *
@@ -5087,10 +5583,10 @@ export interface AssistantOverrides {
5087
5583
  */
5088
5584
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
5089
5585
  /**
5090
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
5091
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
5586
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
5587
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
5092
5588
  */
5093
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
5589
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
5094
5590
  /**
5095
5591
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
5096
5592
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -5146,7 +5642,101 @@ export interface AssistantOverrides {
5146
5642
  */
5147
5643
  observabilityPlan?: LangfuseObservabilityPlan;
5148
5644
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
5149
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
5645
+ credentials?: (({
5646
+ provider: '11labs';
5647
+ } & CreateElevenLabsCredentialDTO) | ({
5648
+ provider: 'anthropic';
5649
+ } & CreateAnthropicCredentialDTO) | ({
5650
+ provider: 'anyscale';
5651
+ } & CreateAnyscaleCredentialDTO) | ({
5652
+ provider: 'assembly-ai';
5653
+ } & CreateAssemblyAICredentialDTO) | ({
5654
+ provider: 'azure-openai';
5655
+ } & CreateAzureOpenAICredentialDTO) | ({
5656
+ provider: 'azure';
5657
+ } & CreateAzureCredentialDTO) | ({
5658
+ provider: 'byo-sip-trunk';
5659
+ } & CreateByoSipTrunkCredentialDTO) | ({
5660
+ provider: 'cartesia';
5661
+ } & CreateCartesiaCredentialDTO) | ({
5662
+ provider: 'cerebras';
5663
+ } & CreateCerebrasCredentialDTO) | ({
5664
+ provider: 'cloudflare';
5665
+ } & CreateCloudflareCredentialDTO) | ({
5666
+ provider: 'custom-llm';
5667
+ } & CreateCustomLLMCredentialDTO) | ({
5668
+ provider: 'deepgram';
5669
+ } & CreateDeepgramCredentialDTO) | ({
5670
+ provider: 'deepinfra';
5671
+ } & CreateDeepInfraCredentialDTO) | ({
5672
+ provider: 'deep-seek';
5673
+ } & CreateDeepSeekCredentialDTO) | ({
5674
+ provider: 'gcp';
5675
+ } & CreateGcpCredentialDTO) | ({
5676
+ provider: 'gladia';
5677
+ } & CreateGladiaCredentialDTO) | ({
5678
+ provider: 'gohighlevel';
5679
+ } & CreateGoHighLevelCredentialDTO) | ({
5680
+ provider: 'google';
5681
+ } & CreateGoogleCredentialDTO) | ({
5682
+ provider: 'groq';
5683
+ } & CreateGroqCredentialDTO) | ({
5684
+ provider: 'inflection-ai';
5685
+ } & CreateInflectionAICredentialDTO) | ({
5686
+ provider: 'langfuse';
5687
+ } & CreateLangfuseCredentialDTO) | ({
5688
+ provider: 'lmnt';
5689
+ } & CreateLmntCredentialDTO) | ({
5690
+ provider: 'make';
5691
+ } & CreateMakeCredentialDTO) | ({
5692
+ provider: 'openai';
5693
+ } & CreateOpenAICredentialDTO) | ({
5694
+ provider: 'openrouter';
5695
+ } & CreateOpenRouterCredentialDTO) | ({
5696
+ provider: 'perplexity-ai';
5697
+ } & CreatePerplexityAICredentialDTO) | ({
5698
+ provider: 'playht';
5699
+ } & CreatePlayHTCredentialDTO) | ({
5700
+ provider: 'rime-ai';
5701
+ } & CreateRimeAICredentialDTO) | ({
5702
+ provider: 'runpod';
5703
+ } & CreateRunpodCredentialDTO) | ({
5704
+ provider: 's3';
5705
+ } & CreateS3CredentialDTO) | ({
5706
+ provider: 'supabase';
5707
+ } & CreateSupabaseCredentialDTO) | ({
5708
+ provider: 'smallest-ai';
5709
+ } & CreateSmallestAICredentialDTO) | ({
5710
+ provider: 'tavus';
5711
+ } & CreateTavusCredentialDTO) | ({
5712
+ provider: 'together-ai';
5713
+ } & CreateTogetherAICredentialDTO) | ({
5714
+ provider: 'twilio';
5715
+ } & CreateTwilioCredentialDTO) | ({
5716
+ provider: 'vonage';
5717
+ } & CreateVonageCredentialDTO) | ({
5718
+ provider: 'webhook';
5719
+ } & CreateWebhookCredentialDTO) | ({
5720
+ provider: 'xai';
5721
+ } & CreateXAiCredentialDTO) | ({
5722
+ provider: 'neuphonic';
5723
+ } & CreateNeuphonicCredentialDTO) | ({
5724
+ provider: 'hume';
5725
+ } & CreateHumeCredentialDTO) | ({
5726
+ provider: 'mistral';
5727
+ } & CreateMistralCredentialDTO) | ({
5728
+ provider: 'speechmatics';
5729
+ } & CreateSpeechmaticsCredentialDTO) | ({
5730
+ provider: 'trieve';
5731
+ } & CreateTrieveCredentialDTO) | ({
5732
+ provider: 'google.calendar.oauth2-client';
5733
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
5734
+ provider: 'google.calendar.oauth2-authorization';
5735
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
5736
+ provider: 'google.sheets.oauth2-authorization';
5737
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
5738
+ provider: 'slack.oauth2-authorization';
5739
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
5150
5740
  /**
5151
5741
  * These are values that will be used to replace the template variables in the assistant messages and other text-based fields.
5152
5742
  * This uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html
@@ -5273,6 +5863,15 @@ export interface CreateSquadDTO {
5273
5863
  */
5274
5864
  membersOverrides?: AssistantOverrides;
5275
5865
  }
5866
+ export interface PhoneNumberHookCallRinging {
5867
+ /**
5868
+ * This is the event to trigger the hook on
5869
+ * @maxLength 1000
5870
+ */
5871
+ on: 'call.ringing';
5872
+ /** This is the set of actions to perform when the hook triggers */
5873
+ do: any[];
5874
+ }
5276
5875
  export interface ImportTwilioPhoneNumberDTO {
5277
5876
  /**
5278
5877
  * This is the fallback destination an inbound call will be transferred to if:
@@ -5283,6 +5882,8 @@ export interface ImportTwilioPhoneNumberDTO {
5283
5882
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
5284
5883
  */
5285
5884
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
5885
+ /** This is the hooks that will be used for incoming calls to this phone number. */
5886
+ hooks?: PhoneNumberHookCallRinging[];
5286
5887
  /**
5287
5888
  * These are the digits of the phone number you own on your Twilio.
5288
5889
  * @deprecated
@@ -5340,6 +5941,11 @@ export interface CreateCustomerDTO {
5340
5941
  * @example null
5341
5942
  */
5342
5943
  extension?: string;
5944
+ /**
5945
+ * These are the overrides for the assistant's settings and template variables specific to this customer.
5946
+ * This allows customization of the assistant's behavior for individual customers in batch calls.
5947
+ */
5948
+ assistantOverrides?: AssistantOverrides;
5343
5949
  /**
5344
5950
  * This is the number of the customer.
5345
5951
  * @minLength 3
@@ -5356,136 +5962,21 @@ export interface CreateCustomerDTO {
5356
5962
  */
5357
5963
  name?: string;
5358
5964
  }
5359
- export interface CreateCallDTO {
5360
- /**
5361
- * This is the name of the call. This is just for your own reference.
5362
- * @maxLength 40
5363
- */
5364
- name?: string;
5365
- /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
5366
- assistantId?: string;
5367
- /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
5368
- assistant?: CreateAssistantDTO;
5369
- /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
5370
- assistantOverrides?: AssistantOverrides;
5371
- /** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
5372
- squadId?: string;
5373
- /** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
5374
- squad?: CreateSquadDTO;
5375
- /**
5376
- * This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
5377
- *
5378
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
5379
- */
5380
- phoneNumberId?: string;
5381
- /**
5382
- * This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
5383
- *
5384
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
5385
- */
5386
- phoneNumber?: ImportTwilioPhoneNumberDTO;
5965
+ export interface SchedulePlan {
5387
5966
  /**
5388
- * This is the customer that will be called. To call a transient customer , use `customer` instead.
5389
- *
5390
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
5391
- */
5392
- customerId?: string;
5393
- /**
5394
- * This is the customer that will be called. To call an existing customer, use `customerId` instead.
5395
- *
5396
- * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
5967
+ * This is the ISO 8601 date-time string of the earliest time the call can be scheduled.
5968
+ * @format date-time
5397
5969
  */
5398
- customer?: CreateCustomerDTO;
5399
- }
5400
- export interface AnalysisCostBreakdown {
5401
- /** This is the cost to summarize the call. */
5402
- summary?: number;
5403
- /** This is the number of prompt tokens used to summarize the call. */
5404
- summaryPromptTokens?: number;
5405
- /** This is the number of completion tokens used to summarize the call. */
5406
- summaryCompletionTokens?: number;
5407
- /** This is the cost to extract structured data from the call. */
5408
- structuredData?: number;
5409
- /** This is the number of prompt tokens used to extract structured data from the call. */
5410
- structuredDataPromptTokens?: number;
5411
- /** This is the number of completion tokens used to extract structured data from the call. */
5412
- structuredDataCompletionTokens?: number;
5413
- /** This is the cost to evaluate if the call was successful. */
5414
- successEvaluation?: number;
5415
- /** This is the number of prompt tokens used to evaluate if the call was successful. */
5416
- successEvaluationPromptTokens?: number;
5417
- /** This is the number of completion tokens used to evaluate if the call was successful. */
5418
- successEvaluationCompletionTokens?: number;
5419
- }
5420
- export interface CostBreakdown {
5421
- /** This is the cost of the transport provider, like Twilio or Vonage. */
5422
- transport?: number;
5423
- /** This is the cost of the speech-to-text service. */
5424
- stt?: number;
5425
- /** This is the cost of the language model. */
5426
- llm?: number;
5427
- /** This is the cost of the text-to-speech service. */
5428
- tts?: number;
5429
- /** This is the cost of Vapi. */
5430
- vapi?: number;
5431
- /** This is the total cost of the call. */
5432
- total?: number;
5433
- /** This is the LLM prompt tokens used for the call. */
5434
- llmPromptTokens?: number;
5435
- /** This is the LLM completion tokens used for the call. */
5436
- llmCompletionTokens?: number;
5437
- /** This is the TTS characters used for the call. */
5438
- ttsCharacters?: number;
5439
- /** This is the cost of the analysis. */
5440
- analysisCostBreakdown?: AnalysisCostBreakdown;
5441
- }
5442
- export interface Analysis {
5443
- /** This is the summary of the call. Customize by setting `assistant.analysisPlan.summaryPrompt`. */
5444
- summary?: string;
5445
- /** This is the structured data extracted from the call. Customize by setting `assistant.analysisPlan.structuredDataPrompt` and/or `assistant.analysisPlan.structuredDataSchema`. */
5446
- structuredData?: object;
5447
- /** This is the structured data catalog of the call. Customize by setting `assistant.analysisPlan.structuredDataMultiPlan`. */
5448
- structuredDataMulti?: object[];
5449
- /** This is the evaluation of the call. Customize by setting `assistant.analysisPlan.successEvaluationPrompt` and/or `assistant.analysisPlan.successEvaluationRubric`. */
5450
- successEvaluation?: string;
5451
- }
5452
- export interface Monitor {
5453
- /** This is the URL where the assistant's calls can be listened to in real-time. To enable, set `assistant.monitorPlan.listenEnabled` to `true`. */
5454
- listenUrl?: string;
5455
- /** This is the URL where the assistant's calls can be controlled in real-time. To enable, set `assistant.monitorPlan.controlEnabled` to `true`. */
5456
- controlUrl?: string;
5457
- }
5458
- export interface Artifact {
5459
- /** These are the messages that were spoken during the call. */
5460
- messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
5461
- /** These are the messages that were spoken during the call, formatted for OpenAI. */
5462
- messagesOpenAIFormatted?: OpenAIMessage[];
5463
- /** This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
5464
- recordingUrl?: string;
5465
- /** This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`. */
5466
- stereoRecordingUrl?: string;
5467
- /** This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. */
5468
- videoRecordingUrl?: string;
5469
- /** This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps. */
5470
- videoRecordingStartDelaySeconds?: number;
5471
- /** This is the transcript of the call. This is derived from `artifact.messages` but provided for convenience. */
5472
- transcript?: string;
5473
- /** This is the packet capture url for the call. This is only available for `phone` type calls where phone number's provider is `vapi` or `byo-phone-number`. */
5474
- pcapUrl?: string;
5475
- }
5476
- export interface Transport {
5477
- /** This is the provider used for the call. */
5478
- provider?: 'twilio' | 'vonage' | 'vapi' | 'daily' | 'telnyx';
5970
+ earliestAt: string;
5479
5971
  /**
5480
- * This is determines whether the assistant will have video enabled.
5481
- *
5482
- * Only relevant for `webCall` type.
5972
+ * This is the ISO 8601 date-time string of the latest time the call can be scheduled.
5973
+ * @format date-time
5483
5974
  */
5484
- assistantVideoEnabled?: boolean;
5975
+ latestAt?: string;
5485
5976
  }
5486
5977
  export interface Call {
5487
5978
  /** This is the type of call. */
5488
- type?: 'inboundPhoneCall' | 'outboundPhoneCall' | 'webCall';
5979
+ type?: 'inboundPhoneCall' | 'outboundPhoneCall' | 'webCall' | 'vapi.websocketCall';
5489
5980
  /** These are the costs of individual components of the call in USD. */
5490
5981
  costs?: (TransportCost | TranscriberCost | ModelCost | VoiceCost | VapiCost | VoicemailDetectionCost | AnalysisCost)[];
5491
5982
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
@@ -5504,7 +5995,7 @@ export interface Call {
5504
5995
  /** This is the status of the call. */
5505
5996
  status?: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
5506
5997
  /** This is the explanation for how the call ended. */
5507
- endedReason?: 'assistant-not-valid' | 'assistant-not-provided' | 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'assistant-said-message-with-end-call-enabled' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'db-error' | 'assistant-not-found' | 'license-check-failed' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-no-available-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'vapifault-phone-call-worker-setup-socket-error' | 'vapifault-phone-call-worker-worker-setup-socket-timeout' | 'vapifault-phone-call-worker-could-not-find-call' | 'vapifault-transport-never-connected' | 'vapifault-web-call-worker-setup-failed' | 'vapifault-transport-connected-but-call-not-active' | 'vapifault-call-started-but-connection-to-transport-missing' | 'pipeline-error-openai-llm-failed' | 'pipeline-error-azure-openai-llm-failed' | 'pipeline-error-groq-llm-failed' | 'pipeline-error-google-llm-failed' | 'pipeline-error-xai-llm-failed' | 'pipeline-error-mistral-llm-failed' | 'pipeline-error-inflection-ai-llm-failed' | 'pipeline-error-cerebras-llm-failed' | 'pipeline-error-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-llm-failed' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-llm-failed' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-llm-failed' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-llm-failed' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-llm-failed' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-llm-failed' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-llm-failed' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-500-server-error' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'pipeline-error-tavus-video-failed' | 'pipeline-error-custom-transcriber-failed' | 'pipeline-error-11labs-transcriber-failed' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
5998
+ endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
5508
5999
  /** This is the destination where the call ended up being transferred to. If the call was not transferred, this will be empty. */
5509
6000
  destination?: TransferDestinationNumber | TransferDestinationSip;
5510
6001
  /** This is the unique identifier for the call. */
@@ -5543,8 +6034,6 @@ export interface Call {
5543
6034
  monitor?: Monitor;
5544
6035
  /** These are the artifacts created from the call. Configure in `assistant.artifactPlan`. */
5545
6036
  artifact?: Artifact;
5546
- /** This is the transport used for the call. */
5547
- transport?: Transport;
5548
6037
  /**
5549
6038
  * The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage. callControlId in Telnyx.
5550
6039
  *
@@ -5590,22 +6079,37 @@ export interface Call {
5590
6079
  * @maxLength 40
5591
6080
  */
5592
6081
  name?: string;
6082
+ /** This is the schedule plan of the call. */
6083
+ schedulePlan?: SchedulePlan;
6084
+ /** This is the transport of the call. */
6085
+ transport?: object;
5593
6086
  }
5594
- export interface PaginationMeta {
5595
- itemsPerPage: number;
5596
- totalItems: number;
5597
- currentPage: number;
6087
+ export interface CallBatchError {
6088
+ customer: CreateCustomerDTO;
6089
+ error: string;
5598
6090
  }
5599
- export interface CallPaginatedResponse {
6091
+ export interface CallBatchResponse {
6092
+ /** This is the list of calls that were created. */
5600
6093
  results: Call[];
5601
- metadata: PaginationMeta;
6094
+ /** This is the list of calls that failed to be created. */
6095
+ errors: CallBatchError[];
5602
6096
  }
5603
- export interface CreateOutboundCallDTO {
6097
+ export interface CreateCallDTO {
6098
+ /**
6099
+ * This is used to issue batch calls to multiple customers.
6100
+ *
6101
+ * Only relevant for `outboundPhoneCall`. To call a single customer, use `customer` instead.
6102
+ */
6103
+ customers?: CreateCustomerDTO[];
5604
6104
  /**
5605
6105
  * This is the name of the call. This is just for your own reference.
5606
6106
  * @maxLength 40
5607
6107
  */
5608
6108
  name?: string;
6109
+ /** This is the schedule plan of the call. */
6110
+ schedulePlan?: SchedulePlan;
6111
+ /** This is the transport of the call. */
6112
+ transport?: object;
5609
6113
  /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
5610
6114
  assistantId?: string;
5611
6115
  /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
@@ -5641,17 +6145,77 @@ export interface CreateOutboundCallDTO {
5641
6145
  */
5642
6146
  customer?: CreateCustomerDTO;
5643
6147
  }
5644
- export interface CreateWebCallDTO {
5645
- /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
5646
- assistantId?: string;
5647
- /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
5648
- assistant?: CreateAssistantDTO;
5649
- /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
5650
- assistantOverrides?: AssistantOverrides;
5651
- /** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
5652
- squadId?: string;
5653
- /** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
5654
- squad?: CreateSquadDTO;
6148
+ export interface PaginationMeta {
6149
+ itemsPerPage: number;
6150
+ totalItems: number;
6151
+ currentPage: number;
6152
+ }
6153
+ export interface CallPaginatedResponse {
6154
+ results: Call[];
6155
+ metadata: PaginationMeta;
6156
+ }
6157
+ export interface CreateOutboundCallDTO {
6158
+ /**
6159
+ * This is used to issue batch calls to multiple customers.
6160
+ *
6161
+ * Only relevant for `outboundPhoneCall`. To call a single customer, use `customer` instead.
6162
+ */
6163
+ customers?: CreateCustomerDTO[];
6164
+ /**
6165
+ * This is the name of the call. This is just for your own reference.
6166
+ * @maxLength 40
6167
+ */
6168
+ name?: string;
6169
+ /** This is the schedule plan of the call. */
6170
+ schedulePlan?: SchedulePlan;
6171
+ /** This is the transport of the call. */
6172
+ transport?: object;
6173
+ /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
6174
+ assistantId?: string;
6175
+ /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
6176
+ assistant?: CreateAssistantDTO;
6177
+ /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
6178
+ assistantOverrides?: AssistantOverrides;
6179
+ /** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
6180
+ squadId?: string;
6181
+ /** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
6182
+ squad?: CreateSquadDTO;
6183
+ /**
6184
+ * This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
6185
+ *
6186
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6187
+ */
6188
+ phoneNumberId?: string;
6189
+ /**
6190
+ * This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
6191
+ *
6192
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6193
+ */
6194
+ phoneNumber?: ImportTwilioPhoneNumberDTO;
6195
+ /**
6196
+ * This is the customer that will be called. To call a transient customer , use `customer` instead.
6197
+ *
6198
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6199
+ */
6200
+ customerId?: string;
6201
+ /**
6202
+ * This is the customer that will be called. To call an existing customer, use `customerId` instead.
6203
+ *
6204
+ * Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
6205
+ */
6206
+ customer?: CreateCustomerDTO;
6207
+ }
6208
+ export interface CreateWebCallDTO {
6209
+ /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */
6210
+ assistantId?: string;
6211
+ /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */
6212
+ assistant?: CreateAssistantDTO;
6213
+ /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */
6214
+ assistantOverrides?: AssistantOverrides;
6215
+ /** This is the squad that will be used for the call. To use a transient squad, use `squad` instead. */
6216
+ squadId?: string;
6217
+ /** This is a squad that will be used for the call. To use an existing squad, use `squadId` instead. */
6218
+ squad?: CreateSquadDTO;
5655
6219
  }
5656
6220
  export interface UpdateCallDTO {
5657
6221
  /**
@@ -5770,6 +6334,8 @@ export interface Transfer {
5770
6334
  }
5771
6335
  export interface CreateWorkflowDTO {
5772
6336
  nodes: (Say | Gather | ApiRequest | Hangup | Transfer)[];
6337
+ /** These are the options for the workflow's LLM. */
6338
+ model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
5773
6339
  /** @maxLength 80 */
5774
6340
  name: string;
5775
6341
  edges: Edge[];
@@ -5817,10 +6383,10 @@ export interface Assistant {
5817
6383
  */
5818
6384
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
5819
6385
  /**
5820
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
5821
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
6386
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
6387
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
5822
6388
  */
5823
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
6389
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
5824
6390
  /**
5825
6391
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
5826
6392
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -5876,7 +6442,101 @@ export interface Assistant {
5876
6442
  */
5877
6443
  observabilityPlan?: LangfuseObservabilityPlan;
5878
6444
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
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)[];
6445
+ credentials?: (({
6446
+ provider: '11labs';
6447
+ } & CreateElevenLabsCredentialDTO) | ({
6448
+ provider: 'anthropic';
6449
+ } & CreateAnthropicCredentialDTO) | ({
6450
+ provider: 'anyscale';
6451
+ } & CreateAnyscaleCredentialDTO) | ({
6452
+ provider: 'assembly-ai';
6453
+ } & CreateAssemblyAICredentialDTO) | ({
6454
+ provider: 'azure-openai';
6455
+ } & CreateAzureOpenAICredentialDTO) | ({
6456
+ provider: 'azure';
6457
+ } & CreateAzureCredentialDTO) | ({
6458
+ provider: 'byo-sip-trunk';
6459
+ } & CreateByoSipTrunkCredentialDTO) | ({
6460
+ provider: 'cartesia';
6461
+ } & CreateCartesiaCredentialDTO) | ({
6462
+ provider: 'cerebras';
6463
+ } & CreateCerebrasCredentialDTO) | ({
6464
+ provider: 'cloudflare';
6465
+ } & CreateCloudflareCredentialDTO) | ({
6466
+ provider: 'custom-llm';
6467
+ } & CreateCustomLLMCredentialDTO) | ({
6468
+ provider: 'deepgram';
6469
+ } & CreateDeepgramCredentialDTO) | ({
6470
+ provider: 'deepinfra';
6471
+ } & CreateDeepInfraCredentialDTO) | ({
6472
+ provider: 'deep-seek';
6473
+ } & CreateDeepSeekCredentialDTO) | ({
6474
+ provider: 'gcp';
6475
+ } & CreateGcpCredentialDTO) | ({
6476
+ provider: 'gladia';
6477
+ } & CreateGladiaCredentialDTO) | ({
6478
+ provider: 'gohighlevel';
6479
+ } & CreateGoHighLevelCredentialDTO) | ({
6480
+ provider: 'google';
6481
+ } & CreateGoogleCredentialDTO) | ({
6482
+ provider: 'groq';
6483
+ } & CreateGroqCredentialDTO) | ({
6484
+ provider: 'inflection-ai';
6485
+ } & CreateInflectionAICredentialDTO) | ({
6486
+ provider: 'langfuse';
6487
+ } & CreateLangfuseCredentialDTO) | ({
6488
+ provider: 'lmnt';
6489
+ } & CreateLmntCredentialDTO) | ({
6490
+ provider: 'make';
6491
+ } & CreateMakeCredentialDTO) | ({
6492
+ provider: 'openai';
6493
+ } & CreateOpenAICredentialDTO) | ({
6494
+ provider: 'openrouter';
6495
+ } & CreateOpenRouterCredentialDTO) | ({
6496
+ provider: 'perplexity-ai';
6497
+ } & CreatePerplexityAICredentialDTO) | ({
6498
+ provider: 'playht';
6499
+ } & CreatePlayHTCredentialDTO) | ({
6500
+ provider: 'rime-ai';
6501
+ } & CreateRimeAICredentialDTO) | ({
6502
+ provider: 'runpod';
6503
+ } & CreateRunpodCredentialDTO) | ({
6504
+ provider: 's3';
6505
+ } & CreateS3CredentialDTO) | ({
6506
+ provider: 'supabase';
6507
+ } & CreateSupabaseCredentialDTO) | ({
6508
+ provider: 'smallest-ai';
6509
+ } & CreateSmallestAICredentialDTO) | ({
6510
+ provider: 'tavus';
6511
+ } & CreateTavusCredentialDTO) | ({
6512
+ provider: 'together-ai';
6513
+ } & CreateTogetherAICredentialDTO) | ({
6514
+ provider: 'twilio';
6515
+ } & CreateTwilioCredentialDTO) | ({
6516
+ provider: 'vonage';
6517
+ } & CreateVonageCredentialDTO) | ({
6518
+ provider: 'webhook';
6519
+ } & CreateWebhookCredentialDTO) | ({
6520
+ provider: 'xai';
6521
+ } & CreateXAiCredentialDTO) | ({
6522
+ provider: 'neuphonic';
6523
+ } & CreateNeuphonicCredentialDTO) | ({
6524
+ provider: 'hume';
6525
+ } & CreateHumeCredentialDTO) | ({
6526
+ provider: 'mistral';
6527
+ } & CreateMistralCredentialDTO) | ({
6528
+ provider: 'speechmatics';
6529
+ } & CreateSpeechmaticsCredentialDTO) | ({
6530
+ provider: 'trieve';
6531
+ } & CreateTrieveCredentialDTO) | ({
6532
+ provider: 'google.calendar.oauth2-client';
6533
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
6534
+ provider: 'google.calendar.oauth2-authorization';
6535
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
6536
+ provider: 'google.sheets.oauth2-authorization';
6537
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
6538
+ provider: 'slack.oauth2-authorization';
6539
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
5880
6540
  /**
5881
6541
  * This is the name of the assistant.
5882
6542
  *
@@ -6019,10 +6679,10 @@ export interface UpdateAssistantDTO {
6019
6679
  */
6020
6680
  voicemailDetection?: GoogleVoicemailDetectionPlan | OpenAIVoicemailDetectionPlan | TwilioVoicemailDetectionPlan;
6021
6681
  /**
6022
- * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
6023
- * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input"]
6682
+ * These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started. You can check the shape of the messages in ClientMessage schema.
6683
+ * @example ["conversation-update","function-call","hang","model-output","speech-update","status-update","transfer-update","transcript","tool-calls","user-interrupted","voice-input","workflow.node.started"]
6024
6684
  */
6025
- clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input';
6685
+ clientMessages?: 'conversation-update' | 'function-call' | 'function-call-result' | 'hang' | 'language-changed' | 'metadata' | 'model-output' | 'speech-update' | 'status-update' | 'transcript' | 'tool-calls' | 'tool-calls-result' | 'transfer-update' | 'user-interrupted' | 'voice-input' | 'workflow.node.started';
6026
6686
  /**
6027
6687
  * These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
6028
6688
  * @example ["conversation-update","end-of-call-report","function-call","hang","speech-update","status-update","tool-calls","transfer-destination-request","user-interrupted"]
@@ -6078,7 +6738,101 @@ export interface UpdateAssistantDTO {
6078
6738
  */
6079
6739
  observabilityPlan?: LangfuseObservabilityPlan;
6080
6740
  /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */
6081
- credentials?: (CreateAnthropicCredentialDTO | CreateAnyscaleCredentialDTO | CreateAssemblyAICredentialDTO | CreateAzureCredentialDTO | CreateAzureOpenAICredentialDTO | CreateByoSipTrunkCredentialDTO | CreateCartesiaCredentialDTO | CreateCerebrasCredentialDTO | CreateCloudflareCredentialDTO | CreateCustomLLMCredentialDTO | CreateDeepgramCredentialDTO | CreateDeepInfraCredentialDTO | CreateDeepSeekCredentialDTO | CreateElevenLabsCredentialDTO | CreateGcpCredentialDTO | CreateGladiaCredentialDTO | CreateGoHighLevelCredentialDTO | CreateGoogleCredentialDTO | CreateGroqCredentialDTO | CreateHumeCredentialDTO | CreateInflectionAICredentialDTO | CreateLangfuseCredentialDTO | CreateLmntCredentialDTO | CreateMakeCredentialDTO | CreateMistralCredentialDTO | CreateNeuphonicCredentialDTO | CreateOpenAICredentialDTO | CreateOpenRouterCredentialDTO | CreatePerplexityAICredentialDTO | CreatePlayHTCredentialDTO | CreateRimeAICredentialDTO | CreateRunpodCredentialDTO | CreateS3CredentialDTO | CreateSmallestAICredentialDTO | CreateSpeechmaticsCredentialDTO | CreateSupabaseCredentialDTO | CreateTavusCredentialDTO | CreateTogetherAICredentialDTO | CreateTrieveCredentialDTO | CreateTwilioCredentialDTO | CreateVonageCredentialDTO | CreateWebhookCredentialDTO | CreateXAiCredentialDTO | CreateGoogleCalendarOAuth2ClientCredentialDTO | CreateGoogleCalendarOAuth2AuthorizationCredentialDTO)[];
6741
+ credentials?: (({
6742
+ provider: '11labs';
6743
+ } & CreateElevenLabsCredentialDTO) | ({
6744
+ provider: 'anthropic';
6745
+ } & CreateAnthropicCredentialDTO) | ({
6746
+ provider: 'anyscale';
6747
+ } & CreateAnyscaleCredentialDTO) | ({
6748
+ provider: 'assembly-ai';
6749
+ } & CreateAssemblyAICredentialDTO) | ({
6750
+ provider: 'azure-openai';
6751
+ } & CreateAzureOpenAICredentialDTO) | ({
6752
+ provider: 'azure';
6753
+ } & CreateAzureCredentialDTO) | ({
6754
+ provider: 'byo-sip-trunk';
6755
+ } & CreateByoSipTrunkCredentialDTO) | ({
6756
+ provider: 'cartesia';
6757
+ } & CreateCartesiaCredentialDTO) | ({
6758
+ provider: 'cerebras';
6759
+ } & CreateCerebrasCredentialDTO) | ({
6760
+ provider: 'cloudflare';
6761
+ } & CreateCloudflareCredentialDTO) | ({
6762
+ provider: 'custom-llm';
6763
+ } & CreateCustomLLMCredentialDTO) | ({
6764
+ provider: 'deepgram';
6765
+ } & CreateDeepgramCredentialDTO) | ({
6766
+ provider: 'deepinfra';
6767
+ } & CreateDeepInfraCredentialDTO) | ({
6768
+ provider: 'deep-seek';
6769
+ } & CreateDeepSeekCredentialDTO) | ({
6770
+ provider: 'gcp';
6771
+ } & CreateGcpCredentialDTO) | ({
6772
+ provider: 'gladia';
6773
+ } & CreateGladiaCredentialDTO) | ({
6774
+ provider: 'gohighlevel';
6775
+ } & CreateGoHighLevelCredentialDTO) | ({
6776
+ provider: 'google';
6777
+ } & CreateGoogleCredentialDTO) | ({
6778
+ provider: 'groq';
6779
+ } & CreateGroqCredentialDTO) | ({
6780
+ provider: 'inflection-ai';
6781
+ } & CreateInflectionAICredentialDTO) | ({
6782
+ provider: 'langfuse';
6783
+ } & CreateLangfuseCredentialDTO) | ({
6784
+ provider: 'lmnt';
6785
+ } & CreateLmntCredentialDTO) | ({
6786
+ provider: 'make';
6787
+ } & CreateMakeCredentialDTO) | ({
6788
+ provider: 'openai';
6789
+ } & CreateOpenAICredentialDTO) | ({
6790
+ provider: 'openrouter';
6791
+ } & CreateOpenRouterCredentialDTO) | ({
6792
+ provider: 'perplexity-ai';
6793
+ } & CreatePerplexityAICredentialDTO) | ({
6794
+ provider: 'playht';
6795
+ } & CreatePlayHTCredentialDTO) | ({
6796
+ provider: 'rime-ai';
6797
+ } & CreateRimeAICredentialDTO) | ({
6798
+ provider: 'runpod';
6799
+ } & CreateRunpodCredentialDTO) | ({
6800
+ provider: 's3';
6801
+ } & CreateS3CredentialDTO) | ({
6802
+ provider: 'supabase';
6803
+ } & CreateSupabaseCredentialDTO) | ({
6804
+ provider: 'smallest-ai';
6805
+ } & CreateSmallestAICredentialDTO) | ({
6806
+ provider: 'tavus';
6807
+ } & CreateTavusCredentialDTO) | ({
6808
+ provider: 'together-ai';
6809
+ } & CreateTogetherAICredentialDTO) | ({
6810
+ provider: 'twilio';
6811
+ } & CreateTwilioCredentialDTO) | ({
6812
+ provider: 'vonage';
6813
+ } & CreateVonageCredentialDTO) | ({
6814
+ provider: 'webhook';
6815
+ } & CreateWebhookCredentialDTO) | ({
6816
+ provider: 'xai';
6817
+ } & CreateXAiCredentialDTO) | ({
6818
+ provider: 'neuphonic';
6819
+ } & CreateNeuphonicCredentialDTO) | ({
6820
+ provider: 'hume';
6821
+ } & CreateHumeCredentialDTO) | ({
6822
+ provider: 'mistral';
6823
+ } & CreateMistralCredentialDTO) | ({
6824
+ provider: 'speechmatics';
6825
+ } & CreateSpeechmaticsCredentialDTO) | ({
6826
+ provider: 'trieve';
6827
+ } & CreateTrieveCredentialDTO) | ({
6828
+ provider: 'google.calendar.oauth2-client';
6829
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
6830
+ provider: 'google.calendar.oauth2-authorization';
6831
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
6832
+ provider: 'google.sheets.oauth2-authorization';
6833
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
6834
+ provider: 'slack.oauth2-authorization';
6835
+ } & CreateSlackOAuth2AuthorizationCredentialDTO))[];
6082
6836
  /**
6083
6837
  * This is the name of the assistant.
6084
6838
  *
@@ -6175,6 +6929,8 @@ export interface ByoPhoneNumber {
6175
6929
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6176
6930
  */
6177
6931
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
6932
+ /** This is the hooks that will be used for incoming calls to this phone number. */
6933
+ hooks?: PhoneNumberHookCallRinging[];
6178
6934
  /** This is to bring your own phone numbers from your own SIP trunks or Carriers. */
6179
6935
  provider: 'byo-phone-number';
6180
6936
  /**
@@ -6256,6 +7012,8 @@ export interface TwilioPhoneNumber {
6256
7012
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6257
7013
  */
6258
7014
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7015
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7016
+ hooks?: PhoneNumberHookCallRinging[];
6259
7017
  /** This is to use numbers bought on Twilio. */
6260
7018
  provider: 'twilio';
6261
7019
  /** This is the unique identifier for the phone number. */
@@ -6318,6 +7076,8 @@ export interface VonagePhoneNumber {
6318
7076
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6319
7077
  */
6320
7078
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7079
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7080
+ hooks?: PhoneNumberHookCallRinging[];
6321
7081
  /** This is to use numbers bought on Vonage. */
6322
7082
  provider: 'vonage';
6323
7083
  /** This is the unique identifier for the phone number. */
@@ -6394,6 +7154,8 @@ export interface VapiPhoneNumber {
6394
7154
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6395
7155
  */
6396
7156
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7157
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7158
+ hooks?: PhoneNumberHookCallRinging[];
6397
7159
  /** This is to create free SIP phone numbers on Vapi. */
6398
7160
  provider: 'vapi';
6399
7161
  /** This is the unique identifier for the phone number. */
@@ -6470,6 +7232,8 @@ export interface TelnyxPhoneNumber {
6470
7232
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6471
7233
  */
6472
7234
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7235
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7236
+ hooks?: PhoneNumberHookCallRinging[];
6473
7237
  /** This is to use numbers bought on Telnyx. */
6474
7238
  provider: 'telnyx';
6475
7239
  /** This is the unique identifier for the phone number. */
@@ -6530,6 +7294,8 @@ export interface CreateByoPhoneNumberDTO {
6530
7294
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6531
7295
  */
6532
7296
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7297
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7298
+ hooks?: PhoneNumberHookCallRinging[];
6533
7299
  /** This is to bring your own phone numbers from your own SIP trunks or Carriers. */
6534
7300
  provider: 'byo-phone-number';
6535
7301
  /**
@@ -6595,6 +7361,8 @@ export interface CreateTwilioPhoneNumberDTO {
6595
7361
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6596
7362
  */
6597
7363
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7364
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7365
+ hooks?: PhoneNumberHookCallRinging[];
6598
7366
  /** This is to use numbers bought on Twilio. */
6599
7367
  provider: 'twilio';
6600
7368
  /** These are the digits of the phone number you own on your Twilio. */
@@ -6641,6 +7409,8 @@ export interface CreateVonagePhoneNumberDTO {
6641
7409
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6642
7410
  */
6643
7411
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7412
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7413
+ hooks?: PhoneNumberHookCallRinging[];
6644
7414
  /** This is to use numbers bought on Vonage. */
6645
7415
  provider: 'vonage';
6646
7416
  /** These are the digits of the phone number you own on your Vonage. */
@@ -6685,6 +7455,8 @@ export interface CreateVapiPhoneNumberDTO {
6685
7455
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6686
7456
  */
6687
7457
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7458
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7459
+ hooks?: PhoneNumberHookCallRinging[];
6688
7460
  /** This is to create free SIP phone numbers on Vapi. */
6689
7461
  provider: 'vapi';
6690
7462
  /**
@@ -6743,6 +7515,8 @@ export interface CreateTelnyxPhoneNumberDTO {
6743
7515
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6744
7516
  */
6745
7517
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7518
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7519
+ hooks?: PhoneNumberHookCallRinging[];
6746
7520
  /** This is to use numbers bought on Telnyx. */
6747
7521
  provider: 'telnyx';
6748
7522
  /** These are the digits of the phone number you own on your Telnyx. */
@@ -6787,6 +7561,8 @@ export interface UpdateByoPhoneNumberDTO {
6787
7561
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6788
7562
  */
6789
7563
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7564
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7565
+ hooks?: PhoneNumberHookCallRinging[];
6790
7566
  /**
6791
7567
  * This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.
6792
7568
  *
@@ -6850,6 +7626,8 @@ export interface UpdateTwilioPhoneNumberDTO {
6850
7626
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6851
7627
  */
6852
7628
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7629
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7630
+ hooks?: PhoneNumberHookCallRinging[];
6853
7631
  /**
6854
7632
  * This is the name of the phone number. This is just for your own reference.
6855
7633
  * @maxLength 40
@@ -6894,6 +7672,8 @@ export interface UpdateVonagePhoneNumberDTO {
6894
7672
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6895
7673
  */
6896
7674
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7675
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7676
+ hooks?: PhoneNumberHookCallRinging[];
6897
7677
  /**
6898
7678
  * This is the name of the phone number. This is just for your own reference.
6899
7679
  * @maxLength 40
@@ -6936,6 +7716,8 @@ export interface UpdateVapiPhoneNumberDTO {
6936
7716
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6937
7717
  */
6938
7718
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7719
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7720
+ hooks?: PhoneNumberHookCallRinging[];
6939
7721
  /**
6940
7722
  * This is the name of the phone number. This is just for your own reference.
6941
7723
  * @maxLength 40
@@ -6986,6 +7768,8 @@ export interface UpdateTelnyxPhoneNumberDTO {
6986
7768
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
6987
7769
  */
6988
7770
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7771
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7772
+ hooks?: PhoneNumberHookCallRinging[];
6989
7773
  /**
6990
7774
  * This is the name of the phone number. This is just for your own reference.
6991
7775
  * @maxLength 40
@@ -7028,6 +7812,8 @@ export interface ImportVonagePhoneNumberDTO {
7028
7812
  * If this is not set and above conditions are met, the inbound call is hung up with an error message.
7029
7813
  */
7030
7814
  fallbackDestination?: TransferDestinationNumber | TransferDestinationSip;
7815
+ /** This is the hooks that will be used for incoming calls to this phone number. */
7816
+ hooks?: PhoneNumberHookCallRinging[];
7031
7817
  /**
7032
7818
  * These are the digits of the phone number you own on your Vonage.
7033
7819
  * @deprecated
@@ -7609,27 +8395,6 @@ export interface TextEditorTool {
7609
8395
  */
7610
8396
  name: 'str_replace_editor';
7611
8397
  }
7612
- export interface KnowledgeBase {
7613
- /**
7614
- * The name of the knowledge base
7615
- * @example "My Knowledge Base"
7616
- */
7617
- name: string;
7618
- /**
7619
- * The provider of the knowledge base
7620
- * @example "google"
7621
- */
7622
- provider: 'google';
7623
- /**
7624
- * The model to use for the knowledge base
7625
- * @example "gemini-1.5-flash"
7626
- */
7627
- model: 'gemini-2.0-flash-thinking-exp' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-flash-exp' | 'gemini-2.0-flash-realtime-exp' | 'gemini-1.5-flash' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro';
7628
- /** A description of the knowledge base */
7629
- description: string;
7630
- /** The file IDs associated with this knowledge base */
7631
- fileIds: string[];
7632
- }
7633
8398
  export interface QueryTool {
7634
8399
  /**
7635
8400
  * This determines if the tool is async.
@@ -7764,10 +8529,345 @@ export interface GoogleSheetsRowAppendTool {
7764
8529
  */
7765
8530
  createdAt: string;
7766
8531
  /**
7767
- * This is the ISO 8601 date-time string of when the tool was last updated.
7768
- * @format date-time
8532
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8533
+ * @format date-time
8534
+ */
8535
+ updatedAt: string;
8536
+ /**
8537
+ * This is the function definition of the tool.
8538
+ *
8539
+ * 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.
8540
+ *
8541
+ * 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.
8542
+ */
8543
+ function?: OpenAIFunction;
8544
+ /**
8545
+ * This is the server that will be hit when this tool is requested by the model.
8546
+ *
8547
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8548
+ *
8549
+ * 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.
8550
+ */
8551
+ server?: Server;
8552
+ }
8553
+ export interface GoogleCalendarCheckAvailabilityTool {
8554
+ /**
8555
+ * This determines if the tool is async.
8556
+ *
8557
+ * 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.
8558
+ *
8559
+ * 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.
8560
+ *
8561
+ * Defaults to synchronous (`false`).
8562
+ * @example false
8563
+ */
8564
+ async?: boolean;
8565
+ /**
8566
+ * These are the messages that will be spoken to the user as the tool is running.
8567
+ *
8568
+ * 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.
8569
+ */
8570
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8571
+ /** The type of tool. "google.calendar.availability.check" for Google Calendar availability check tool. */
8572
+ type: 'google.calendar.availability.check';
8573
+ /** This is the unique identifier for the tool. */
8574
+ id: string;
8575
+ /** This is the unique identifier for the organization that this tool belongs to. */
8576
+ orgId: string;
8577
+ /**
8578
+ * This is the ISO 8601 date-time string of when the tool was created.
8579
+ * @format date-time
8580
+ */
8581
+ createdAt: string;
8582
+ /**
8583
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8584
+ * @format date-time
8585
+ */
8586
+ updatedAt: string;
8587
+ /**
8588
+ * This is the function definition of the tool.
8589
+ *
8590
+ * 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.
8591
+ *
8592
+ * 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.
8593
+ */
8594
+ function?: OpenAIFunction;
8595
+ /**
8596
+ * This is the server that will be hit when this tool is requested by the model.
8597
+ *
8598
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8599
+ *
8600
+ * 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.
8601
+ */
8602
+ server?: Server;
8603
+ }
8604
+ export interface SlackSendMessageTool {
8605
+ /**
8606
+ * This determines if the tool is async.
8607
+ *
8608
+ * 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.
8609
+ *
8610
+ * 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.
8611
+ *
8612
+ * Defaults to synchronous (`false`).
8613
+ * @example false
8614
+ */
8615
+ async?: boolean;
8616
+ /**
8617
+ * These are the messages that will be spoken to the user as the tool is running.
8618
+ *
8619
+ * 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.
8620
+ */
8621
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8622
+ /** The type of tool. "slack.message.send" for Slack send message tool. */
8623
+ type: 'slack.message.send';
8624
+ /** This is the unique identifier for the tool. */
8625
+ id: string;
8626
+ /** This is the unique identifier for the organization that this tool belongs to. */
8627
+ orgId: string;
8628
+ /**
8629
+ * This is the ISO 8601 date-time string of when the tool was created.
8630
+ * @format date-time
8631
+ */
8632
+ createdAt: string;
8633
+ /**
8634
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8635
+ * @format date-time
8636
+ */
8637
+ updatedAt: string;
8638
+ /**
8639
+ * This is the function definition of the tool.
8640
+ *
8641
+ * 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.
8642
+ *
8643
+ * 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.
8644
+ */
8645
+ function?: OpenAIFunction;
8646
+ /**
8647
+ * This is the server that will be hit when this tool is requested by the model.
8648
+ *
8649
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8650
+ *
8651
+ * 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.
8652
+ */
8653
+ server?: Server;
8654
+ }
8655
+ export interface SmsSendTool {
8656
+ /**
8657
+ * This determines if the tool is async.
8658
+ *
8659
+ * 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.
8660
+ *
8661
+ * 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.
8662
+ *
8663
+ * Defaults to synchronous (`false`).
8664
+ * @example false
8665
+ */
8666
+ async?: boolean;
8667
+ /**
8668
+ * These are the messages that will be spoken to the user as the tool is running.
8669
+ *
8670
+ * 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.
8671
+ */
8672
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8673
+ /** The type of tool. "sms" for Twilio SMS sending tool. */
8674
+ type: 'sms';
8675
+ /** This is the unique identifier for the tool. */
8676
+ id: string;
8677
+ /** This is the unique identifier for the organization that this tool belongs to. */
8678
+ orgId: string;
8679
+ /**
8680
+ * This is the ISO 8601 date-time string of when the tool was created.
8681
+ * @format date-time
8682
+ */
8683
+ createdAt: string;
8684
+ /**
8685
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8686
+ * @format date-time
8687
+ */
8688
+ updatedAt: string;
8689
+ /**
8690
+ * This is the function definition of the tool.
8691
+ *
8692
+ * 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.
8693
+ *
8694
+ * 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.
8695
+ */
8696
+ function?: OpenAIFunction;
8697
+ /**
8698
+ * This is the server that will be hit when this tool is requested by the model.
8699
+ *
8700
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8701
+ *
8702
+ * 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.
8703
+ */
8704
+ server?: Server;
8705
+ }
8706
+ export interface McpTool {
8707
+ /**
8708
+ * This determines if the tool is async.
8709
+ *
8710
+ * 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.
8711
+ *
8712
+ * 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.
8713
+ *
8714
+ * Defaults to synchronous (`false`).
8715
+ * @example false
8716
+ */
8717
+ async?: boolean;
8718
+ /**
8719
+ * These are the messages that will be spoken to the user as the tool is running.
8720
+ *
8721
+ * 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.
8722
+ */
8723
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8724
+ /** The type of tool. "mcp" for MCP tool. */
8725
+ type: 'mcp';
8726
+ /** This is the unique identifier for the tool. */
8727
+ id: string;
8728
+ /** This is the unique identifier for the organization that this tool belongs to. */
8729
+ orgId: string;
8730
+ /**
8731
+ * This is the ISO 8601 date-time string of when the tool was created.
8732
+ * @format date-time
8733
+ */
8734
+ createdAt: string;
8735
+ /**
8736
+ * This is the ISO 8601 date-time string of when the tool was last updated.
8737
+ * @format date-time
8738
+ */
8739
+ updatedAt: string;
8740
+ /**
8741
+ * This is the function definition of the tool.
8742
+ *
8743
+ * 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.
8744
+ *
8745
+ * 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.
8746
+ */
8747
+ function?: OpenAIFunction;
8748
+ /**
8749
+ * This is the server that will be hit when this tool is requested by the model.
8750
+ *
8751
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8752
+ *
8753
+ * 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.
8754
+ */
8755
+ server?: Server;
8756
+ }
8757
+ export interface CreateOutputToolDTO {
8758
+ /**
8759
+ * This determines if the tool is async.
8760
+ *
8761
+ * 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.
8762
+ *
8763
+ * 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.
8764
+ *
8765
+ * Defaults to synchronous (`false`).
8766
+ * @example false
8767
+ */
8768
+ async?: boolean;
8769
+ /**
8770
+ * These are the messages that will be spoken to the user as the tool is running.
8771
+ *
8772
+ * 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.
8773
+ */
8774
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8775
+ /** The type of tool. "output" for Output tool. */
8776
+ type: 'output';
8777
+ /**
8778
+ * This is the function definition of the tool.
8779
+ *
8780
+ * 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.
8781
+ *
8782
+ * 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.
8783
+ */
8784
+ function?: OpenAIFunction;
8785
+ /**
8786
+ * This is the server that will be hit when this tool is requested by the model.
8787
+ *
8788
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8789
+ *
8790
+ * 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.
8791
+ */
8792
+ server?: Server;
8793
+ }
8794
+ export interface CreateBashToolDTO {
8795
+ /**
8796
+ * This determines if the tool is async.
8797
+ *
8798
+ * 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.
8799
+ *
8800
+ * 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.
8801
+ *
8802
+ * Defaults to synchronous (`false`).
8803
+ * @example false
8804
+ */
8805
+ async?: boolean;
8806
+ /**
8807
+ * These are the messages that will be spoken to the user as the tool is running.
8808
+ *
8809
+ * 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.
8810
+ */
8811
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8812
+ /** The type of tool. "bash" for Bash tool. */
8813
+ type: 'bash';
8814
+ /** The sub type of tool. */
8815
+ subType: 'bash_20241022';
8816
+ /**
8817
+ * The name of the tool, fixed to 'bash'
8818
+ * @default "bash"
8819
+ */
8820
+ name: 'bash';
8821
+ /**
8822
+ * This is the function definition of the tool.
8823
+ *
8824
+ * 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.
8825
+ *
8826
+ * 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.
8827
+ */
8828
+ function?: OpenAIFunction;
8829
+ /**
8830
+ * This is the server that will be hit when this tool is requested by the model.
8831
+ *
8832
+ * All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
8833
+ *
8834
+ * 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.
8835
+ */
8836
+ server?: Server;
8837
+ }
8838
+ export interface CreateComputerToolDTO {
8839
+ /**
8840
+ * This determines if the tool is async.
8841
+ *
8842
+ * 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.
8843
+ *
8844
+ * 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.
8845
+ *
8846
+ * Defaults to synchronous (`false`).
8847
+ * @example false
8848
+ */
8849
+ async?: boolean;
8850
+ /**
8851
+ * These are the messages that will be spoken to the user as the tool is running.
8852
+ *
8853
+ * 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.
8854
+ */
8855
+ messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8856
+ /** The type of tool. "computer" for Computer tool. */
8857
+ type: 'computer';
8858
+ /** The sub type of tool. */
8859
+ subType: 'computer_20241022';
8860
+ /**
8861
+ * The name of the tool, fixed to 'computer'
8862
+ * @default "computer"
7769
8863
  */
7770
- updatedAt: string;
8864
+ name: 'computer';
8865
+ /** The display width in pixels */
8866
+ displayWidthPx: number;
8867
+ /** The display height in pixels */
8868
+ displayHeightPx: number;
8869
+ /** Optional display number */
8870
+ displayNumber?: number;
7771
8871
  /**
7772
8872
  * This is the function definition of the tool.
7773
8873
  *
@@ -7785,7 +8885,7 @@ export interface GoogleSheetsRowAppendTool {
7785
8885
  */
7786
8886
  server?: Server;
7787
8887
  }
7788
- export interface CreateOutputToolDTO {
8888
+ export interface CreateTextEditorToolDTO {
7789
8889
  /**
7790
8890
  * This determines if the tool is async.
7791
8891
  *
@@ -7803,8 +8903,15 @@ export interface CreateOutputToolDTO {
7803
8903
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7804
8904
  */
7805
8905
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7806
- /** The type of tool. "output" for Output tool. */
7807
- type: 'output';
8906
+ /** The type of tool. "textEditor" for Text Editor tool. */
8907
+ type: 'textEditor';
8908
+ /** The sub type of tool. */
8909
+ subType: 'text_editor_20241022';
8910
+ /**
8911
+ * The name of the tool, fixed to 'str_replace_editor'
8912
+ * @default "str_replace_editor"
8913
+ */
8914
+ name: 'str_replace_editor';
7808
8915
  /**
7809
8916
  * This is the function definition of the tool.
7810
8917
  *
@@ -7822,7 +8929,7 @@ export interface CreateOutputToolDTO {
7822
8929
  */
7823
8930
  server?: Server;
7824
8931
  }
7825
- export interface CreateBashToolDTO {
8932
+ export interface CreateSmsSendToolDTO {
7826
8933
  /**
7827
8934
  * This determines if the tool is async.
7828
8935
  *
@@ -7840,15 +8947,8 @@ export interface CreateBashToolDTO {
7840
8947
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7841
8948
  */
7842
8949
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7843
- /** The type of tool. "bash" for Bash tool. */
7844
- type: 'bash';
7845
- /** The sub type of tool. */
7846
- subType: 'bash_20241022';
7847
- /**
7848
- * The name of the tool, fixed to 'bash'
7849
- * @default "bash"
7850
- */
7851
- name: 'bash';
8950
+ /** The type of tool. "sms" for Twilio SMS sending tool. */
8951
+ type: 'sms';
7852
8952
  /**
7853
8953
  * This is the function definition of the tool.
7854
8954
  *
@@ -7866,7 +8966,7 @@ export interface CreateBashToolDTO {
7866
8966
  */
7867
8967
  server?: Server;
7868
8968
  }
7869
- export interface CreateComputerToolDTO {
8969
+ export interface CreateMcpToolDTO {
7870
8970
  /**
7871
8971
  * This determines if the tool is async.
7872
8972
  *
@@ -7884,21 +8984,8 @@ export interface CreateComputerToolDTO {
7884
8984
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7885
8985
  */
7886
8986
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7887
- /** The type of tool. "computer" for Computer tool. */
7888
- type: 'computer';
7889
- /** The sub type of tool. */
7890
- subType: 'computer_20241022';
7891
- /**
7892
- * The name of the tool, fixed to 'computer'
7893
- * @default "computer"
7894
- */
7895
- name: 'computer';
7896
- /** The display width in pixels */
7897
- displayWidthPx: number;
7898
- /** The display height in pixels */
7899
- displayHeightPx: number;
7900
- /** Optional display number */
7901
- displayNumber?: number;
8987
+ /** The type of tool. "mcp" for MCP tool. */
8988
+ type: 'mcp';
7902
8989
  /**
7903
8990
  * This is the function definition of the tool.
7904
8991
  *
@@ -7916,7 +9003,7 @@ export interface CreateComputerToolDTO {
7916
9003
  */
7917
9004
  server?: Server;
7918
9005
  }
7919
- export interface CreateTextEditorToolDTO {
9006
+ export interface UpdateDtmfToolDTO {
7920
9007
  /**
7921
9008
  * This determines if the tool is async.
7922
9009
  *
@@ -7934,15 +9021,6 @@ export interface CreateTextEditorToolDTO {
7934
9021
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7935
9022
  */
7936
9023
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7937
- /** The type of tool. "textEditor" for Text Editor tool. */
7938
- type: 'textEditor';
7939
- /** The sub type of tool. */
7940
- subType: 'text_editor_20241022';
7941
- /**
7942
- * The name of the tool, fixed to 'str_replace_editor'
7943
- * @default "str_replace_editor"
7944
- */
7945
- name: 'str_replace_editor';
7946
9024
  /**
7947
9025
  * This is the function definition of the tool.
7948
9026
  *
@@ -7960,7 +9038,7 @@ export interface CreateTextEditorToolDTO {
7960
9038
  */
7961
9039
  server?: Server;
7962
9040
  }
7963
- export interface CreateQueryToolDTO {
9041
+ export interface UpdateEndCallToolDTO {
7964
9042
  /**
7965
9043
  * This determines if the tool is async.
7966
9044
  *
@@ -7978,10 +9056,6 @@ export interface CreateQueryToolDTO {
7978
9056
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
7979
9057
  */
7980
9058
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
7981
- /** The type of tool. "query" for Query tool. */
7982
- type: 'query';
7983
- /** The knowledge bases to query */
7984
- knowledgeBases?: KnowledgeBase[];
7985
9059
  /**
7986
9060
  * This is the function definition of the tool.
7987
9061
  *
@@ -7999,7 +9073,7 @@ export interface CreateQueryToolDTO {
7999
9073
  */
8000
9074
  server?: Server;
8001
9075
  }
8002
- export interface CreateGoogleCalendarCreateEventToolDTO {
9076
+ export interface UpdateFunctionToolDTO {
8003
9077
  /**
8004
9078
  * This determines if the tool is async.
8005
9079
  *
@@ -8017,8 +9091,6 @@ export interface CreateGoogleCalendarCreateEventToolDTO {
8017
9091
  * 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
9092
  */
8019
9093
  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
9094
  /**
8023
9095
  * This is the function definition of the tool.
8024
9096
  *
@@ -8036,7 +9108,7 @@ export interface CreateGoogleCalendarCreateEventToolDTO {
8036
9108
  */
8037
9109
  server?: Server;
8038
9110
  }
8039
- export interface CreateGoogleSheetsRowAppendToolDTO {
9111
+ export interface UpdateGhlToolDTO {
8040
9112
  /**
8041
9113
  * This determines if the tool is async.
8042
9114
  *
@@ -8054,8 +9126,6 @@ export interface CreateGoogleSheetsRowAppendToolDTO {
8054
9126
  * 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
9127
  */
8056
9128
  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
9129
  /**
8060
9130
  * This is the function definition of the tool.
8061
9131
  *
@@ -8072,8 +9142,9 @@ export interface CreateGoogleSheetsRowAppendToolDTO {
8072
9142
  * 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
9143
  */
8074
9144
  server?: Server;
9145
+ metadata?: GhlToolMetadata;
8075
9146
  }
8076
- export interface UpdateDtmfToolDTO {
9147
+ export interface UpdateMakeToolDTO {
8077
9148
  /**
8078
9149
  * This determines if the tool is async.
8079
9150
  *
@@ -8107,8 +9178,9 @@ export interface UpdateDtmfToolDTO {
8107
9178
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8108
9179
  */
8109
9180
  server?: Server;
9181
+ metadata?: MakeToolMetadata;
8110
9182
  }
8111
- export interface UpdateEndCallToolDTO {
9183
+ export interface UpdateTransferCallToolDTO {
8112
9184
  /**
8113
9185
  * This determines if the tool is async.
8114
9186
  *
@@ -8126,6 +9198,8 @@ export interface UpdateEndCallToolDTO {
8126
9198
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8127
9199
  */
8128
9200
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9201
+ /** These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called. */
9202
+ destinations?: (TransferDestinationAssistant | TransferDestinationStep | TransferDestinationNumber | TransferDestinationSip)[];
8129
9203
  /**
8130
9204
  * This is the function definition of the tool.
8131
9205
  *
@@ -8143,7 +9217,7 @@ export interface UpdateEndCallToolDTO {
8143
9217
  */
8144
9218
  server?: Server;
8145
9219
  }
8146
- export interface UpdateFunctionToolDTO {
9220
+ export interface UpdateOutputToolDTO {
8147
9221
  /**
8148
9222
  * This determines if the tool is async.
8149
9223
  *
@@ -8178,7 +9252,7 @@ export interface UpdateFunctionToolDTO {
8178
9252
  */
8179
9253
  server?: Server;
8180
9254
  }
8181
- export interface UpdateGhlToolDTO {
9255
+ export interface UpdateBashToolDTO {
8182
9256
  /**
8183
9257
  * This determines if the tool is async.
8184
9258
  *
@@ -8196,6 +9270,8 @@ export interface UpdateGhlToolDTO {
8196
9270
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8197
9271
  */
8198
9272
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9273
+ /** The sub type of tool. */
9274
+ subType?: 'bash_20241022';
8199
9275
  /**
8200
9276
  * This is the function definition of the tool.
8201
9277
  *
@@ -8212,9 +9288,13 @@ export interface UpdateGhlToolDTO {
8212
9288
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8213
9289
  */
8214
9290
  server?: Server;
8215
- metadata?: GhlToolMetadata;
9291
+ /**
9292
+ * The name of the tool, fixed to 'bash'
9293
+ * @default "bash"
9294
+ */
9295
+ name?: 'bash';
8216
9296
  }
8217
- export interface UpdateMakeToolDTO {
9297
+ export interface UpdateComputerToolDTO {
8218
9298
  /**
8219
9299
  * This determines if the tool is async.
8220
9300
  *
@@ -8232,6 +9312,8 @@ export interface UpdateMakeToolDTO {
8232
9312
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8233
9313
  */
8234
9314
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9315
+ /** The sub type of tool. */
9316
+ subType?: 'computer_20241022';
8235
9317
  /**
8236
9318
  * This is the function definition of the tool.
8237
9319
  *
@@ -8248,9 +9330,19 @@ export interface UpdateMakeToolDTO {
8248
9330
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8249
9331
  */
8250
9332
  server?: Server;
8251
- metadata?: MakeToolMetadata;
9333
+ /**
9334
+ * The name of the tool, fixed to 'computer'
9335
+ * @default "computer"
9336
+ */
9337
+ name?: 'computer';
9338
+ /** The display width in pixels */
9339
+ displayWidthPx?: number;
9340
+ /** The display height in pixels */
9341
+ displayHeightPx?: number;
9342
+ /** Optional display number */
9343
+ displayNumber?: number;
8252
9344
  }
8253
- export interface UpdateTransferCallToolDTO {
9345
+ export interface UpdateTextEditorToolDTO {
8254
9346
  /**
8255
9347
  * This determines if the tool is async.
8256
9348
  *
@@ -8268,8 +9360,8 @@ export interface UpdateTransferCallToolDTO {
8268
9360
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8269
9361
  */
8270
9362
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8271
- /** These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called. */
8272
- destinations?: (TransferDestinationAssistant | TransferDestinationStep | TransferDestinationNumber | TransferDestinationSip)[];
9363
+ /** The sub type of tool. */
9364
+ subType?: 'text_editor_20241022';
8273
9365
  /**
8274
9366
  * This is the function definition of the tool.
8275
9367
  *
@@ -8286,8 +9378,13 @@ export interface UpdateTransferCallToolDTO {
8286
9378
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8287
9379
  */
8288
9380
  server?: Server;
9381
+ /**
9382
+ * The name of the tool, fixed to 'str_replace_editor'
9383
+ * @default "str_replace_editor"
9384
+ */
9385
+ name?: 'str_replace_editor';
8289
9386
  }
8290
- export interface UpdateOutputToolDTO {
9387
+ export interface UpdateQueryToolDTO {
8291
9388
  /**
8292
9389
  * This determines if the tool is async.
8293
9390
  *
@@ -8305,6 +9402,8 @@ export interface UpdateOutputToolDTO {
8305
9402
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8306
9403
  */
8307
9404
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
9405
+ /** The knowledge bases to query */
9406
+ knowledgeBases?: KnowledgeBase[];
8308
9407
  /**
8309
9408
  * This is the function definition of the tool.
8310
9409
  *
@@ -8322,7 +9421,7 @@ export interface UpdateOutputToolDTO {
8322
9421
  */
8323
9422
  server?: Server;
8324
9423
  }
8325
- export interface UpdateBashToolDTO {
9424
+ export interface UpdateGoogleCalendarCreateEventToolDTO {
8326
9425
  /**
8327
9426
  * This determines if the tool is async.
8328
9427
  *
@@ -8340,8 +9439,6 @@ export interface UpdateBashToolDTO {
8340
9439
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8341
9440
  */
8342
9441
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8343
- /** The sub type of tool. */
8344
- subType?: 'bash_20241022';
8345
9442
  /**
8346
9443
  * This is the function definition of the tool.
8347
9444
  *
@@ -8358,13 +9455,8 @@ export interface UpdateBashToolDTO {
8358
9455
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8359
9456
  */
8360
9457
  server?: Server;
8361
- /**
8362
- * The name of the tool, fixed to 'bash'
8363
- * @default "bash"
8364
- */
8365
- name?: 'bash';
8366
9458
  }
8367
- export interface UpdateComputerToolDTO {
9459
+ export interface UpdateGoogleSheetsRowAppendToolDTO {
8368
9460
  /**
8369
9461
  * This determines if the tool is async.
8370
9462
  *
@@ -8382,8 +9474,6 @@ export interface UpdateComputerToolDTO {
8382
9474
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8383
9475
  */
8384
9476
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8385
- /** The sub type of tool. */
8386
- subType?: 'computer_20241022';
8387
9477
  /**
8388
9478
  * This is the function definition of the tool.
8389
9479
  *
@@ -8400,19 +9490,8 @@ export interface UpdateComputerToolDTO {
8400
9490
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8401
9491
  */
8402
9492
  server?: Server;
8403
- /**
8404
- * The name of the tool, fixed to 'computer'
8405
- * @default "computer"
8406
- */
8407
- name?: 'computer';
8408
- /** The display width in pixels */
8409
- displayWidthPx?: number;
8410
- /** The display height in pixels */
8411
- displayHeightPx?: number;
8412
- /** Optional display number */
8413
- displayNumber?: number;
8414
9493
  }
8415
- export interface UpdateTextEditorToolDTO {
9494
+ export interface UpdateGoogleCalendarCheckAvailabilityToolDTO {
8416
9495
  /**
8417
9496
  * This determines if the tool is async.
8418
9497
  *
@@ -8430,8 +9509,6 @@ export interface UpdateTextEditorToolDTO {
8430
9509
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8431
9510
  */
8432
9511
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8433
- /** The sub type of tool. */
8434
- subType?: 'text_editor_20241022';
8435
9512
  /**
8436
9513
  * This is the function definition of the tool.
8437
9514
  *
@@ -8448,13 +9525,8 @@ export interface UpdateTextEditorToolDTO {
8448
9525
  * This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
8449
9526
  */
8450
9527
  server?: Server;
8451
- /**
8452
- * The name of the tool, fixed to 'str_replace_editor'
8453
- * @default "str_replace_editor"
8454
- */
8455
- name?: 'str_replace_editor';
8456
9528
  }
8457
- export interface UpdateQueryToolDTO {
9529
+ export interface UpdateSlackSendMessageToolDTO {
8458
9530
  /**
8459
9531
  * This determines if the tool is async.
8460
9532
  *
@@ -8472,8 +9544,6 @@ export interface UpdateQueryToolDTO {
8472
9544
  * For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
8473
9545
  */
8474
9546
  messages?: (ToolMessageStart | ToolMessageComplete | ToolMessageFailed | ToolMessageDelayed)[];
8475
- /** The knowledge bases to query */
8476
- knowledgeBases?: KnowledgeBase[];
8477
9547
  /**
8478
9548
  * This is the function definition of the tool.
8479
9549
  *
@@ -8491,7 +9561,7 @@ export interface UpdateQueryToolDTO {
8491
9561
  */
8492
9562
  server?: Server;
8493
9563
  }
8494
- export interface UpdateGoogleCalendarCreateEventToolDTO {
9564
+ export interface UpdateSmsSendToolDTO {
8495
9565
  /**
8496
9566
  * This determines if the tool is async.
8497
9567
  *
@@ -8526,7 +9596,7 @@ export interface UpdateGoogleCalendarCreateEventToolDTO {
8526
9596
  */
8527
9597
  server?: Server;
8528
9598
  }
8529
- export interface UpdateGoogleSheetsRowAppendToolDTO {
9599
+ export interface UpdateMcpToolDTO {
8530
9600
  /**
8531
9601
  * This determines if the tool is async.
8532
9602
  *
@@ -8798,6 +9868,8 @@ export interface TrieveKnowledgeBaseImport {
8798
9868
  }
8799
9869
  export interface UpdateWorkflowDTO {
8800
9870
  nodes?: (Say | Gather | ApiRequest | Hangup | Transfer)[];
9871
+ /** These are the options for the workflow's LLM. */
9872
+ model?: AnthropicModel | AnyscaleModel | CerebrasModel | CustomLLMModel | DeepInfraModel | DeepSeekModel | GoogleModel | GroqModel | InflectionAIModel | OpenAIModel | OpenRouterModel | PerplexityAIModel | TogetherAIModel | XaiModel;
8801
9873
  /** @maxLength 80 */
8802
9874
  name?: string;
8803
9875
  edges?: Edge[];
@@ -8879,10 +9951,26 @@ export interface TestSuitePhoneNumber {
8879
9951
  number: string;
8880
9952
  }
8881
9953
  export interface TargetPlan {
8882
- /** This is the phoneNumberId that is being tested. */
9954
+ /**
9955
+ * This is the phone number that is being tested.
9956
+ * During the actual test, it'll be called and the assistant attached to it will pick up and be tested.
9957
+ * To test an assistant directly, send assistantId instead.
9958
+ */
8883
9959
  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. */
9960
+ /**
9961
+ * This can be any phone number (even not on Vapi).
9962
+ * During the actual test, it'll be called.
9963
+ * To test a Vapi number, send phoneNumberId. To test an assistant directly, send assistantId instead.
9964
+ */
8885
9965
  phoneNumber?: TestSuitePhoneNumber;
9966
+ /**
9967
+ * This is the assistant being tested.
9968
+ * During the actual test, it'll invoked directly.
9969
+ * To test the assistant over phone number, send phoneNumberId instead.
9970
+ */
9971
+ assistantId?: string;
9972
+ /** This is the assistant overrides applied to assistantId before it is tested. */
9973
+ assistantOverrides?: AssistantOverrides;
8886
9974
  }
8887
9975
  export interface TestSuite {
8888
9976
  /** This is the unique identifier for the test suite. */
@@ -9185,14 +10273,22 @@ export interface TestSuiteRunScorerAI {
9185
10273
  rubric: string;
9186
10274
  }
9187
10275
  export interface TestSuiteRunTestAttemptCall {
9188
- /** This is the artifact associated with the call. */
10276
+ /** This is the artifact of the call. */
9189
10277
  artifact: Artifact;
9190
10278
  }
10279
+ export interface TestSuiteRunTestAttemptMetadata {
10280
+ /** This is the session ID for the test attempt. */
10281
+ sessionId: string;
10282
+ }
9191
10283
  export interface TestSuiteRunTestAttempt {
9192
10284
  /** These are the results of the scorers used to evaluate the test attempt. */
9193
10285
  scorerResults: TestSuiteRunScorerAI[];
9194
10286
  /** This is the call made during the test attempt. */
9195
- call: TestSuiteRunTestAttemptCall;
10287
+ call?: TestSuiteRunTestAttemptCall;
10288
+ /** This is the call ID for the test attempt. */
10289
+ callId?: string;
10290
+ /** This is the metadata for the test attempt. */
10291
+ metadata?: TestSuiteRunTestAttemptMetadata;
9196
10292
  }
9197
10293
  export interface TestSuiteRunTestResult {
9198
10294
  /** This is the test that was run. */
@@ -11108,6 +12204,56 @@ export interface GoogleCalendarOAuth2AuthorizationCredential {
11108
12204
  */
11109
12205
  name?: string;
11110
12206
  }
12207
+ export interface GoogleSheetsOAuth2AuthorizationCredential {
12208
+ provider: 'google.sheets.oauth2-authorization';
12209
+ /** The authorization ID for the OAuth2 authorization */
12210
+ authorizationId: string;
12211
+ /** This is the unique identifier for the credential. */
12212
+ id: string;
12213
+ /** This is the unique identifier for the org that this credential belongs to. */
12214
+ orgId: string;
12215
+ /**
12216
+ * This is the ISO 8601 date-time string of when the credential was created.
12217
+ * @format date-time
12218
+ */
12219
+ createdAt: string;
12220
+ /**
12221
+ * This is the ISO 8601 date-time string of when the assistant was last updated.
12222
+ * @format date-time
12223
+ */
12224
+ updatedAt: string;
12225
+ /**
12226
+ * This is the name of credential. This is just for your reference.
12227
+ * @minLength 1
12228
+ * @maxLength 40
12229
+ */
12230
+ name?: string;
12231
+ }
12232
+ export interface SlackOAuth2AuthorizationCredential {
12233
+ provider: 'slack.oauth2-authorization';
12234
+ /** The authorization ID for the OAuth2 authorization */
12235
+ authorizationId: string;
12236
+ /** This is the unique identifier for the credential. */
12237
+ id: string;
12238
+ /** This is the unique identifier for the org that this credential belongs to. */
12239
+ orgId: string;
12240
+ /**
12241
+ * This is the ISO 8601 date-time string of when the credential was created.
12242
+ * @format date-time
12243
+ */
12244
+ createdAt: string;
12245
+ /**
12246
+ * This is the ISO 8601 date-time string of when the assistant was last updated.
12247
+ * @format date-time
12248
+ */
12249
+ updatedAt: string;
12250
+ /**
12251
+ * This is the name of credential. This is just for your reference.
12252
+ * @minLength 1
12253
+ * @maxLength 40
12254
+ */
12255
+ name?: string;
12256
+ }
11111
12257
  export interface CreateCerebrasCredentialDTO {
11112
12258
  provider: 'cerebras';
11113
12259
  /**
@@ -11770,6 +12916,26 @@ export interface UpdateGoogleCalendarOAuth2AuthorizationCredentialDTO {
11770
12916
  */
11771
12917
  name?: string;
11772
12918
  }
12919
+ export interface UpdateGoogleSheetsOAuth2AuthorizationCredentialDTO {
12920
+ /** The authorization ID for the OAuth2 authorization */
12921
+ authorizationId?: string;
12922
+ /**
12923
+ * This is the name of credential. This is just for your reference.
12924
+ * @minLength 1
12925
+ * @maxLength 40
12926
+ */
12927
+ name?: string;
12928
+ }
12929
+ export interface UpdateSlackOAuth2AuthorizationCredentialDTO {
12930
+ /** The authorization ID for the OAuth2 authorization */
12931
+ authorizationId?: string;
12932
+ /**
12933
+ * This is the name of credential. This is just for your reference.
12934
+ * @minLength 1
12935
+ * @maxLength 40
12936
+ */
12937
+ name?: string;
12938
+ }
11773
12939
  export interface CredentialSessionResponse {
11774
12940
  sessionToken: string;
11775
12941
  }
@@ -11800,7 +12966,7 @@ export interface CredentialActionRequest {
11800
12966
  }
11801
12967
  export interface CredentialSessionDTO {
11802
12968
  /** 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';
12969
+ provider: 'google.calendar.oauth2-client' | 'google.calendar.oauth2-authorization' | 'google.sheets.oauth2-authorization' | 'slack.oauth2-authorization';
11804
12970
  }
11805
12971
  export interface ToolTemplateSetup {
11806
12972
  title: string;
@@ -11966,6 +13132,12 @@ export interface SyncVoiceLibraryDTO {
11966
13132
  /** List of providers you want to sync. */
11967
13133
  providers?: 'vapi' | '11labs' | 'azure' | 'cartesia' | 'custom-voice' | 'deepgram' | 'hume' | 'lmnt' | 'neuphonic' | 'openai' | 'playht' | 'rime-ai' | 'smallest-ai' | 'tavus' | 'sesame';
11968
13134
  }
13135
+ export interface CreateSesameVoiceDTO {
13136
+ /** The name of the voice. */
13137
+ voiceName?: string;
13138
+ /** The transcript of the utterance. */
13139
+ transcription?: string;
13140
+ }
11969
13141
  export interface VoiceLibraryVoiceResponse {
11970
13142
  voiceId: string;
11971
13143
  name: string;
@@ -12036,6 +13208,8 @@ export interface ClientMessageSpeechUpdate {
12036
13208
  status: 'started' | 'stopped';
12037
13209
  /** This is the role which the speech update is for. */
12038
13210
  role: 'assistant' | 'user';
13211
+ /** This is the turn number of the speech update (0-indexed). */
13212
+ turn?: number;
12039
13213
  }
12040
13214
  export interface ClientMessageTranscript {
12041
13215
  /** This is the type of the message. "transcript" is sent as transcriber outputs partial or final transcript. */
@@ -12120,8 +13294,8 @@ export interface ServerMessageAssistantRequest {
12120
13294
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12121
13295
  /** This is the type of the message. "assistant-request" is sent to fetch assistant configuration for an incoming call. */
12122
13296
  type: 'assistant-request';
12123
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12124
- timestamp?: string;
13297
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13298
+ timestamp?: number;
12125
13299
  /**
12126
13300
  * This is a live version of the `call.artifact`.
12127
13301
  *
@@ -12172,8 +13346,8 @@ export interface ServerMessageConversationUpdate {
12172
13346
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
12173
13347
  /** This is the most up-to-date conversation history at the time the message is sent, formatted for OpenAI. */
12174
13348
  messagesOpenAIFormatted: OpenAIMessage[];
12175
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12176
- timestamp?: string;
13349
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13350
+ timestamp?: number;
12177
13351
  /**
12178
13352
  * This is a live version of the `call.artifact`.
12179
13353
  *
@@ -12221,13 +13395,13 @@ export interface ServerMessageEndOfCallReport {
12221
13395
  /** This is the type of the message. "end-of-call-report" is sent when the call ends and post-processing is complete. */
12222
13396
  type: 'end-of-call-report';
12223
13397
  /** This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id. */
12224
- endedReason: 'assistant-not-valid' | 'assistant-not-provided' | 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'assistant-said-message-with-end-call-enabled' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'db-error' | 'assistant-not-found' | 'license-check-failed' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-no-available-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'vapifault-phone-call-worker-setup-socket-error' | 'vapifault-phone-call-worker-worker-setup-socket-timeout' | 'vapifault-phone-call-worker-could-not-find-call' | 'vapifault-transport-never-connected' | 'vapifault-web-call-worker-setup-failed' | 'vapifault-transport-connected-but-call-not-active' | 'vapifault-call-started-but-connection-to-transport-missing' | 'pipeline-error-openai-llm-failed' | 'pipeline-error-azure-openai-llm-failed' | 'pipeline-error-groq-llm-failed' | 'pipeline-error-google-llm-failed' | 'pipeline-error-xai-llm-failed' | 'pipeline-error-mistral-llm-failed' | 'pipeline-error-inflection-ai-llm-failed' | 'pipeline-error-cerebras-llm-failed' | 'pipeline-error-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-llm-failed' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-llm-failed' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-llm-failed' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-llm-failed' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-llm-failed' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-llm-failed' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-llm-failed' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-500-server-error' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'pipeline-error-tavus-video-failed' | 'pipeline-error-custom-transcriber-failed' | 'pipeline-error-11labs-transcriber-failed' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
13398
+ endedReason: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
12225
13399
  /** This is the cost of the call in USD. This can also be found at `call.cost` on GET /call/:id. */
12226
13400
  cost?: number;
12227
13401
  /** These are the costs of individual components of the call in USD. This can also be found at `call.costs` on GET /call/:id. */
12228
13402
  costs?: (TransportCost | TranscriberCost | ModelCost | VoiceCost | VapiCost | VoicemailDetectionCost | AnalysisCost)[];
12229
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12230
- timestamp?: string;
13403
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13404
+ timestamp?: number;
12231
13405
  /** These are the artifacts from the call. This can also be found at `call.artifact` on GET /call/:id. */
12232
13406
  artifact: Artifact;
12233
13407
  /**
@@ -12288,8 +13462,8 @@ export interface ServerMessageHang {
12288
13462
  * - etc.
12289
13463
  */
12290
13464
  type: 'hang';
12291
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12292
- timestamp?: string;
13465
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13466
+ timestamp?: number;
12293
13467
  /**
12294
13468
  * This is a live version of the `call.artifact`.
12295
13469
  *
@@ -12340,8 +13514,8 @@ export interface ServerMessageKnowledgeBaseRequest {
12340
13514
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
12341
13515
  /** This is just `messages` formatted for OpenAI. */
12342
13516
  messagesOpenAIFormatted: OpenAIMessage[];
12343
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12344
- timestamp?: string;
13517
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13518
+ timestamp?: number;
12345
13519
  /**
12346
13520
  * This is a live version of the `call.artifact`.
12347
13521
  *
@@ -12388,8 +13562,8 @@ export interface ServerMessageModelOutput {
12388
13562
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12389
13563
  /** This is the type of the message. "model-output" is sent as the model outputs tokens. */
12390
13564
  type: 'model-output';
12391
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12392
- timestamp?: string;
13565
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13566
+ timestamp?: number;
12393
13567
  /**
12394
13568
  * This is a live version of the `call.artifact`.
12395
13569
  *
@@ -12446,8 +13620,8 @@ export interface ServerMessagePhoneCallControl {
12446
13620
  request: 'forward' | 'hang-up';
12447
13621
  /** This is the destination to forward the call to if the request is "forward". */
12448
13622
  destination?: TransferDestinationNumber | TransferDestinationSip;
12449
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12450
- timestamp?: string;
13623
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13624
+ timestamp?: number;
12451
13625
  /**
12452
13626
  * This is a live version of the `call.artifact`.
12453
13627
  *
@@ -12498,8 +13672,10 @@ export interface ServerMessageSpeechUpdate {
12498
13672
  status: 'started' | 'stopped';
12499
13673
  /** This is the role which the speech update is for. */
12500
13674
  role: 'assistant' | 'user';
12501
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12502
- timestamp?: string;
13675
+ /** This is the turn number of the speech update (0-indexed). */
13676
+ turn?: number;
13677
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13678
+ timestamp?: number;
12503
13679
  /**
12504
13680
  * This is a live version of the `call.artifact`.
12505
13681
  *
@@ -12549,15 +13725,15 @@ export interface ServerMessageStatusUpdate {
12549
13725
  /** This is the status of the call. */
12550
13726
  status: 'scheduled' | 'queued' | 'ringing' | 'in-progress' | 'forwarding' | 'ended';
12551
13727
  /** This is the reason the call ended. This is only sent if the status is "ended". */
12552
- endedReason?: 'assistant-not-valid' | 'assistant-not-provided' | 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'assistant-said-message-with-end-call-enabled' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'db-error' | 'assistant-not-found' | 'license-check-failed' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-no-available-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'vapifault-phone-call-worker-setup-socket-error' | 'vapifault-phone-call-worker-worker-setup-socket-timeout' | 'vapifault-phone-call-worker-could-not-find-call' | 'vapifault-transport-never-connected' | 'vapifault-web-call-worker-setup-failed' | 'vapifault-transport-connected-but-call-not-active' | 'vapifault-call-started-but-connection-to-transport-missing' | 'pipeline-error-openai-llm-failed' | 'pipeline-error-azure-openai-llm-failed' | 'pipeline-error-groq-llm-failed' | 'pipeline-error-google-llm-failed' | 'pipeline-error-xai-llm-failed' | 'pipeline-error-mistral-llm-failed' | 'pipeline-error-inflection-ai-llm-failed' | 'pipeline-error-cerebras-llm-failed' | 'pipeline-error-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-llm-failed' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-llm-failed' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-llm-failed' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-llm-failed' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-llm-failed' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-llm-failed' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-llm-failed' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-500-server-error' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'pipeline-error-tavus-video-failed' | 'pipeline-error-custom-transcriber-failed' | 'pipeline-error-11labs-transcriber-failed' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'silence-timed-out' | 'sip-gateway-failed-to-connect-call' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
13728
+ endedReason?: 'call-start-error-neither-assistant-nor-server-set' | 'assistant-request-failed' | 'assistant-request-returned-error' | 'assistant-request-returned-unspeakable-error' | 'assistant-request-returned-invalid-assistant' | 'assistant-request-returned-no-assistant' | 'assistant-request-returned-forwarding-phone-number' | 'call.start.error-get-org' | 'call.start.error-get-subscription' | 'call.start.error-get-assistant' | 'call.start.error-get-phone-number' | 'call.start.error-get-customer' | 'call.start.error-get-resources-validation' | 'call.start.error-vapi-number-international' | 'call.start.error-vapi-number-outbound-daily-limit' | 'call.start.error-get-transport' | 'assistant-not-valid' | 'database-error' | 'assistant-not-found' | 'pipeline-error-openai-voice-failed' | 'pipeline-error-cartesia-voice-failed' | 'pipeline-error-deepgram-voice-failed' | 'pipeline-error-eleven-labs-voice-failed' | 'pipeline-error-playht-voice-failed' | 'pipeline-error-lmnt-voice-failed' | 'pipeline-error-azure-voice-failed' | 'pipeline-error-rime-ai-voice-failed' | 'pipeline-error-smallest-ai-voice-failed' | 'pipeline-error-neuphonic-voice-failed' | 'pipeline-error-hume-voice-failed' | 'pipeline-error-sesame-voice-failed' | 'pipeline-error-tavus-video-failed' | 'call.in-progress.error-vapifault-openai-voice-failed' | 'call.in-progress.error-vapifault-cartesia-voice-failed' | 'call.in-progress.error-vapifault-deepgram-voice-failed' | 'call.in-progress.error-vapifault-eleven-labs-voice-failed' | 'call.in-progress.error-vapifault-playht-voice-failed' | 'call.in-progress.error-vapifault-lmnt-voice-failed' | 'call.in-progress.error-vapifault-azure-voice-failed' | 'call.in-progress.error-vapifault-rime-ai-voice-failed' | 'call.in-progress.error-vapifault-smallest-ai-voice-failed' | 'call.in-progress.error-vapifault-neuphonic-voice-failed' | 'call.in-progress.error-vapifault-hume-voice-failed' | 'call.in-progress.error-vapifault-sesame-voice-failed' | 'call.in-progress.error-vapifault-tavus-video-failed' | 'pipeline-error-vapi-llm-failed' | 'pipeline-error-vapi-400-bad-request-validation-failed' | 'pipeline-error-vapi-401-unauthorized' | 'pipeline-error-vapi-403-model-access-denied' | 'pipeline-error-vapi-429-exceeded-quota' | 'pipeline-error-vapi-500-server-error' | 'pipeline-error-vapi-503-server-overloaded-error' | 'call.in-progress.error-vapifault-vapi-llm-failed' | 'call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-vapi-401-unauthorized' | 'call.in-progress.error-vapifault-vapi-403-model-access-denied' | 'call.in-progress.error-vapifault-vapi-429-exceeded-quota' | 'call.in-progress.error-providerfault-vapi-500-server-error' | 'call.in-progress.error-providerfault-vapi-503-server-overloaded-error' | 'pipeline-error-deepgram-transcriber-failed' | 'call.in-progress.error-vapifault-deepgram-transcriber-failed' | 'pipeline-error-gladia-transcriber-failed' | 'call.in-progress.error-vapifault-gladia-transcriber-failed' | 'pipeline-error-speechmatics-transcriber-failed' | 'call.in-progress.error-vapifault-speechmatics-transcriber-failed' | 'pipeline-error-assembly-ai-transcriber-failed' | 'pipeline-error-assembly-ai-returning-400-insufficent-funds' | 'pipeline-error-assembly-ai-returning-400-paid-only-feature' | 'pipeline-error-assembly-ai-returning-401-invalid-credentials' | 'pipeline-error-assembly-ai-returning-500-invalid-schema' | 'pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed' | 'call.in-progress.error-vapifault-assembly-ai-transcriber-failed' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds' | 'call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature' | 'call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema' | 'call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed' | 'pipeline-error-talkscriber-transcriber-failed' | 'call.in-progress.error-vapifault-talkscriber-transcriber-failed' | 'pipeline-error-azure-speech-transcriber-failed' | 'call.in-progress.error-vapifault-azure-speech-transcriber-failed' | 'call.in-progress.error-pipeline-no-available-llm-model' | 'worker-shutdown' | 'unknown-error' | 'vonage-disconnected' | 'vonage-failed-to-connect-call' | 'vonage-completed' | 'phone-call-provider-bypass-enabled-but-no-call-received' | 'call.in-progress.error-vapifault-transport-never-connected' | 'call.in-progress.error-vapifault-transport-connected-but-call-not-active' | 'call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing' | 'call.in-progress.error-vapifault-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-groq-llm-failed' | 'call.in-progress.error-vapifault-google-llm-failed' | 'call.in-progress.error-vapifault-xai-llm-failed' | 'call.in-progress.error-vapifault-mistral-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-cerebras-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-llm-failed' | 'pipeline-error-openai-400-bad-request-validation-failed' | 'pipeline-error-openai-401-unauthorized' | 'pipeline-error-openai-401-incorrect-api-key' | 'pipeline-error-openai-401-account-not-in-organization' | 'pipeline-error-openai-403-model-access-denied' | 'pipeline-error-openai-429-exceeded-quota' | 'pipeline-error-openai-429-rate-limit-reached' | 'pipeline-error-openai-500-server-error' | 'pipeline-error-openai-503-server-overloaded-error' | 'pipeline-error-openai-llm-failed' | 'call.in-progress.error-vapifault-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openai-401-unauthorized' | 'call.in-progress.error-vapifault-openai-401-incorrect-api-key' | 'call.in-progress.error-vapifault-openai-401-account-not-in-organization' | 'call.in-progress.error-vapifault-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-openai-429-exceeded-quota' | 'call.in-progress.error-vapifault-openai-429-rate-limit-reached' | 'call.in-progress.error-providerfault-openai-500-server-error' | 'call.in-progress.error-providerfault-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-400-bad-request-validation-failed' | 'pipeline-error-azure-openai-401-unauthorized' | 'pipeline-error-azure-openai-403-model-access-denied' | 'pipeline-error-azure-openai-429-exceeded-quota' | 'pipeline-error-azure-openai-500-server-error' | 'pipeline-error-azure-openai-503-server-overloaded-error' | 'pipeline-error-azure-openai-llm-failed' | 'call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-azure-openai-401-unauthorized' | 'call.in-progress.error-vapifault-azure-openai-403-model-access-denied' | 'call.in-progress.error-vapifault-azure-openai-429-exceeded-quota' | 'call.in-progress.error-providerfault-azure-openai-500-server-error' | 'call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error' | 'pipeline-error-google-400-bad-request-validation-failed' | 'pipeline-error-google-401-unauthorized' | 'pipeline-error-google-403-model-access-denied' | 'pipeline-error-google-429-exceeded-quota' | 'pipeline-error-google-500-server-error' | 'pipeline-error-google-503-server-overloaded-error' | 'pipeline-error-google-llm-failed' | 'call.in-progress.error-vapifault-google-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-google-401-unauthorized' | 'call.in-progress.error-vapifault-google-403-model-access-denied' | 'call.in-progress.error-vapifault-google-429-exceeded-quota' | 'call.in-progress.error-providerfault-google-500-server-error' | 'call.in-progress.error-providerfault-google-503-server-overloaded-error' | 'pipeline-error-xai-400-bad-request-validation-failed' | 'pipeline-error-xai-401-unauthorized' | 'pipeline-error-xai-403-model-access-denied' | 'pipeline-error-xai-429-exceeded-quota' | 'pipeline-error-xai-500-server-error' | 'pipeline-error-xai-503-server-overloaded-error' | 'pipeline-error-xai-llm-failed' | 'call.in-progress.error-vapifault-xai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-xai-401-unauthorized' | 'call.in-progress.error-vapifault-xai-403-model-access-denied' | 'call.in-progress.error-vapifault-xai-429-exceeded-quota' | 'call.in-progress.error-providerfault-xai-500-server-error' | 'call.in-progress.error-providerfault-xai-503-server-overloaded-error' | 'pipeline-error-mistral-400-bad-request-validation-failed' | 'pipeline-error-mistral-401-unauthorized' | 'pipeline-error-mistral-403-model-access-denied' | 'pipeline-error-mistral-429-exceeded-quota' | 'pipeline-error-mistral-500-server-error' | 'pipeline-error-mistral-503-server-overloaded-error' | 'pipeline-error-mistral-llm-failed' | 'call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-mistral-401-unauthorized' | 'call.in-progress.error-vapifault-mistral-403-model-access-denied' | 'call.in-progress.error-vapifault-mistral-429-exceeded-quota' | 'call.in-progress.error-providerfault-mistral-500-server-error' | 'call.in-progress.error-providerfault-mistral-503-server-overloaded-error' | 'pipeline-error-inflection-ai-400-bad-request-validation-failed' | 'pipeline-error-inflection-ai-401-unauthorized' | 'pipeline-error-inflection-ai-403-model-access-denied' | 'pipeline-error-inflection-ai-429-exceeded-quota' | 'pipeline-error-inflection-ai-500-server-error' | 'pipeline-error-inflection-ai-503-server-overloaded-error' | 'pipeline-error-inflection-ai-llm-failed' | 'call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-inflection-ai-401-unauthorized' | 'call.in-progress.error-vapifault-inflection-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-inflection-ai-500-server-error' | 'call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error' | 'pipeline-error-deep-seek-400-bad-request-validation-failed' | 'pipeline-error-deep-seek-401-unauthorized' | 'pipeline-error-deep-seek-403-model-access-denied' | 'pipeline-error-deep-seek-429-exceeded-quota' | 'pipeline-error-deep-seek-500-server-error' | 'pipeline-error-deep-seek-503-server-overloaded-error' | 'pipeline-error-deep-seek-llm-failed' | 'call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deep-seek-401-unauthorized' | 'call.in-progress.error-vapifault-deep-seek-403-model-access-denied' | 'call.in-progress.error-vapifault-deep-seek-429-exceeded-quota' | 'call.in-progress.error-providerfault-deep-seek-500-server-error' | 'call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error' | 'pipeline-error-groq-400-bad-request-validation-failed' | 'pipeline-error-groq-401-unauthorized' | 'pipeline-error-groq-403-model-access-denied' | 'pipeline-error-groq-429-exceeded-quota' | 'pipeline-error-groq-500-server-error' | 'pipeline-error-groq-503-server-overloaded-error' | 'pipeline-error-groq-llm-failed' | 'call.in-progress.error-vapifault-groq-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-groq-401-unauthorized' | 'call.in-progress.error-vapifault-groq-403-model-access-denied' | 'call.in-progress.error-vapifault-groq-429-exceeded-quota' | 'call.in-progress.error-providerfault-groq-500-server-error' | 'call.in-progress.error-providerfault-groq-503-server-overloaded-error' | 'pipeline-error-cerebras-400-bad-request-validation-failed' | 'pipeline-error-cerebras-401-unauthorized' | 'pipeline-error-cerebras-403-model-access-denied' | 'pipeline-error-cerebras-429-exceeded-quota' | 'pipeline-error-cerebras-500-server-error' | 'pipeline-error-cerebras-503-server-overloaded-error' | 'pipeline-error-cerebras-llm-failed' | 'call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-cerebras-401-unauthorized' | 'call.in-progress.error-vapifault-cerebras-403-model-access-denied' | 'call.in-progress.error-vapifault-cerebras-429-exceeded-quota' | 'call.in-progress.error-providerfault-cerebras-500-server-error' | 'call.in-progress.error-providerfault-cerebras-503-server-overloaded-error' | 'pipeline-error-anthropic-400-bad-request-validation-failed' | 'pipeline-error-anthropic-401-unauthorized' | 'pipeline-error-anthropic-403-model-access-denied' | 'pipeline-error-anthropic-429-exceeded-quota' | 'pipeline-error-anthropic-500-server-error' | 'pipeline-error-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-llm-failed' | 'call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-500-server-error' | 'call.in-progress.error-providerfault-anthropic-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-400-bad-request-validation-failed' | 'pipeline-error-anthropic-bedrock-401-unauthorized' | 'pipeline-error-anthropic-bedrock-403-model-access-denied' | 'pipeline-error-anthropic-bedrock-429-exceeded-quota' | 'pipeline-error-anthropic-bedrock-500-server-error' | 'pipeline-error-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-llm-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-bedrock-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-bedrock-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-bedrock-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-bedrock-500-server-error' | 'call.in-progress.error-providerfault-anthropic-bedrock-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-400-bad-request-validation-failed' | 'pipeline-error-anthropic-vertex-401-unauthorized' | 'pipeline-error-anthropic-vertex-403-model-access-denied' | 'pipeline-error-anthropic-vertex-429-exceeded-quota' | 'pipeline-error-anthropic-vertex-500-server-error' | 'pipeline-error-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-llm-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anthropic-vertex-401-unauthorized' | 'call.in-progress.error-vapifault-anthropic-vertex-403-model-access-denied' | 'call.in-progress.error-vapifault-anthropic-vertex-429-exceeded-quota' | 'call.in-progress.error-providerfault-anthropic-vertex-500-server-error' | 'call.in-progress.error-providerfault-anthropic-vertex-503-server-overloaded-error' | 'pipeline-error-together-ai-400-bad-request-validation-failed' | 'pipeline-error-together-ai-401-unauthorized' | 'pipeline-error-together-ai-403-model-access-denied' | 'pipeline-error-together-ai-429-exceeded-quota' | 'pipeline-error-together-ai-500-server-error' | 'pipeline-error-together-ai-503-server-overloaded-error' | 'pipeline-error-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-llm-failed' | 'call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-together-ai-401-unauthorized' | 'call.in-progress.error-vapifault-together-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-together-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-together-ai-500-server-error' | 'call.in-progress.error-providerfault-together-ai-503-server-overloaded-error' | 'pipeline-error-anyscale-400-bad-request-validation-failed' | 'pipeline-error-anyscale-401-unauthorized' | 'pipeline-error-anyscale-403-model-access-denied' | 'pipeline-error-anyscale-429-exceeded-quota' | 'pipeline-error-anyscale-500-server-error' | 'pipeline-error-anyscale-503-server-overloaded-error' | 'pipeline-error-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-llm-failed' | 'call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-anyscale-401-unauthorized' | 'call.in-progress.error-vapifault-anyscale-403-model-access-denied' | 'call.in-progress.error-vapifault-anyscale-429-exceeded-quota' | 'call.in-progress.error-providerfault-anyscale-500-server-error' | 'call.in-progress.error-providerfault-anyscale-503-server-overloaded-error' | 'pipeline-error-openrouter-400-bad-request-validation-failed' | 'pipeline-error-openrouter-401-unauthorized' | 'pipeline-error-openrouter-403-model-access-denied' | 'pipeline-error-openrouter-429-exceeded-quota' | 'pipeline-error-openrouter-500-server-error' | 'pipeline-error-openrouter-503-server-overloaded-error' | 'pipeline-error-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-llm-failed' | 'call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-openrouter-401-unauthorized' | 'call.in-progress.error-vapifault-openrouter-403-model-access-denied' | 'call.in-progress.error-vapifault-openrouter-429-exceeded-quota' | 'call.in-progress.error-providerfault-openrouter-500-server-error' | 'call.in-progress.error-providerfault-openrouter-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-400-bad-request-validation-failed' | 'pipeline-error-perplexity-ai-401-unauthorized' | 'pipeline-error-perplexity-ai-403-model-access-denied' | 'pipeline-error-perplexity-ai-429-exceeded-quota' | 'pipeline-error-perplexity-ai-500-server-error' | 'pipeline-error-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-llm-failed' | 'call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-perplexity-ai-401-unauthorized' | 'call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied' | 'call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota' | 'call.in-progress.error-providerfault-perplexity-ai-500-server-error' | 'call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error' | 'pipeline-error-deepinfra-400-bad-request-validation-failed' | 'pipeline-error-deepinfra-401-unauthorized' | 'pipeline-error-deepinfra-403-model-access-denied' | 'pipeline-error-deepinfra-429-exceeded-quota' | 'pipeline-error-deepinfra-500-server-error' | 'pipeline-error-deepinfra-503-server-overloaded-error' | 'pipeline-error-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-llm-failed' | 'call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-deepinfra-401-unauthorized' | 'call.in-progress.error-vapifault-deepinfra-403-model-access-denied' | 'call.in-progress.error-vapifault-deepinfra-429-exceeded-quota' | 'call.in-progress.error-providerfault-deepinfra-500-server-error' | 'call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error' | 'pipeline-error-runpod-400-bad-request-validation-failed' | 'pipeline-error-runpod-401-unauthorized' | 'pipeline-error-runpod-403-model-access-denied' | 'pipeline-error-runpod-429-exceeded-quota' | 'pipeline-error-runpod-500-server-error' | 'pipeline-error-runpod-503-server-overloaded-error' | 'pipeline-error-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-llm-failed' | 'call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-runpod-401-unauthorized' | 'call.in-progress.error-vapifault-runpod-403-model-access-denied' | 'call.in-progress.error-vapifault-runpod-429-exceeded-quota' | 'call.in-progress.error-providerfault-runpod-500-server-error' | 'call.in-progress.error-providerfault-runpod-503-server-overloaded-error' | 'pipeline-error-custom-llm-400-bad-request-validation-failed' | 'pipeline-error-custom-llm-401-unauthorized' | 'pipeline-error-custom-llm-403-model-access-denied' | 'pipeline-error-custom-llm-429-exceeded-quota' | 'pipeline-error-custom-llm-500-server-error' | 'pipeline-error-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-llm-failed' | 'call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed' | 'call.in-progress.error-vapifault-custom-llm-401-unauthorized' | 'call.in-progress.error-vapifault-custom-llm-403-model-access-denied' | 'call.in-progress.error-vapifault-custom-llm-429-exceeded-quota' | 'call.in-progress.error-providerfault-custom-llm-500-server-error' | 'call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error' | 'pipeline-error-custom-voice-failed' | 'pipeline-error-cartesia-socket-hang-up' | 'pipeline-error-cartesia-requested-payment' | 'pipeline-error-cartesia-500-server-error' | 'pipeline-error-cartesia-503-server-error' | 'pipeline-error-cartesia-522-server-error' | 'call.in-progress.error-vapifault-cartesia-socket-hang-up' | 'call.in-progress.error-vapifault-cartesia-requested-payment' | 'call.in-progress.error-providerfault-cartesia-500-server-error' | 'call.in-progress.error-providerfault-cartesia-503-server-error' | 'call.in-progress.error-providerfault-cartesia-522-server-error' | 'pipeline-error-eleven-labs-voice-not-found' | 'pipeline-error-eleven-labs-quota-exceeded' | 'pipeline-error-eleven-labs-unauthorized-access' | 'pipeline-error-eleven-labs-unauthorized-to-access-model' | 'pipeline-error-eleven-labs-professional-voices-only-for-creator-plus' | 'pipeline-error-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'pipeline-error-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'pipeline-error-eleven-labs-system-busy-and-requested-upgrade' | 'pipeline-error-eleven-labs-voice-not-fine-tuned' | 'pipeline-error-eleven-labs-invalid-api-key' | 'pipeline-error-eleven-labs-invalid-voice-samples' | 'pipeline-error-eleven-labs-voice-disabled-by-owner' | 'pipeline-error-eleven-labs-blocked-account-in-probation' | 'pipeline-error-eleven-labs-blocked-content-against-their-policy' | 'pipeline-error-eleven-labs-missing-samples-for-voice-clone' | 'pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'pipeline-error-eleven-labs-voice-not-allowed-for-free-users' | 'pipeline-error-eleven-labs-max-character-limit-exceeded' | 'pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'pipeline-error-eleven-labs-500-server-error' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-found' | 'call.in-progress.error-vapifault-eleven-labs-quota-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-access' | 'call.in-progress.error-vapifault-eleven-labs-unauthorized-to-access-model' | 'call.in-progress.error-vapifault-eleven-labs-professional-voices-only-for-creator-plus' | 'call.in-progress.error-vapifault-eleven-labs-blocked-free-plan-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-concurrent-requests-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-blocked-using-instant-voice-clone-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-system-busy-and-requested-upgrade' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned' | 'call.in-progress.error-vapifault-eleven-labs-invalid-api-key' | 'call.in-progress.error-vapifault-eleven-labs-invalid-voice-samples' | 'call.in-progress.error-vapifault-eleven-labs-voice-disabled-by-owner' | 'call.in-progress.error-vapifault-eleven-labs-blocked-account-in-probation' | 'call.in-progress.error-vapifault-eleven-labs-blocked-content-against-their-policy' | 'call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used' | 'call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users' | 'call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded' | 'call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification' | 'call.in-progress.error-providerfault-eleven-labs-500-server-error' | 'pipeline-error-playht-request-timed-out' | 'pipeline-error-playht-invalid-voice' | 'pipeline-error-playht-unexpected-error' | 'pipeline-error-playht-out-of-credits' | 'pipeline-error-playht-invalid-emotion' | 'pipeline-error-playht-voice-must-be-a-valid-voice-manifest-uri' | 'pipeline-error-playht-401-unauthorized' | 'pipeline-error-playht-403-forbidden-out-of-characters' | 'pipeline-error-playht-403-forbidden-api-access-not-available' | 'pipeline-error-playht-429-exceeded-quota' | 'pipeline-error-playht-502-gateway-error' | 'pipeline-error-playht-504-gateway-error' | 'call.in-progress.error-vapifault-playht-request-timed-out' | 'call.in-progress.error-vapifault-playht-invalid-voice' | 'call.in-progress.error-vapifault-playht-unexpected-error' | 'call.in-progress.error-vapifault-playht-out-of-credits' | 'call.in-progress.error-vapifault-playht-invalid-emotion' | 'call.in-progress.error-vapifault-playht-voice-must-be-a-valid-voice-manifest-uri' | 'call.in-progress.error-vapifault-playht-401-unauthorized' | 'call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters' | 'call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available' | 'call.in-progress.error-vapifault-playht-429-exceeded-quota' | 'call.in-progress.error-providerfault-playht-502-gateway-error' | 'call.in-progress.error-providerfault-playht-504-gateway-error' | 'pipeline-error-custom-transcriber-failed' | 'call.in-progress.error-vapifault-custom-transcriber-failed' | 'pipeline-error-eleven-labs-transcriber-failed' | 'call.in-progress.error-vapifault-eleven-labs-transcriber-failed' | 'pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination' | 'pipeline-error-deepgram-returning-401-invalid-credentials' | 'pipeline-error-deepgram-returning-403-model-access-denied' | 'pipeline-error-deepgram-returning-404-not-found' | 'pipeline-error-deepgram-returning-500-invalid-json' | 'pipeline-error-deepgram-returning-502-network-error' | 'pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach' | 'call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination' | 'call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials' | 'call.in-progress.error-vapifault-deepgram-returning-404-not-found' | 'call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied' | 'call.in-progress.error-providerfault-deepgram-returning-500-invalid-json' | 'call.in-progress.error-providerfault-deepgram-returning-502-network-error' | 'call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach' | 'pipeline-error-google-transcriber-failed' | 'call.in-progress.error-vapifault-google-transcriber-failed' | 'pipeline-error-openai-transcriber-failed' | 'call.in-progress.error-vapifault-openai-transcriber-failed' | 'assistant-ended-call' | 'assistant-said-end-call-phrase' | 'assistant-ended-call-with-hangup-task' | 'assistant-ended-call-after-message-spoken' | 'assistant-forwarded-call' | 'assistant-join-timed-out' | 'call.in-progress.error-assistant-did-not-receive-customer-audio' | 'customer-busy' | 'customer-ended-call' | 'customer-did-not-answer' | 'customer-did-not-give-microphone-permission' | 'exceeded-max-duration' | 'manually-canceled' | 'phone-call-provider-closed-websocket' | 'silence-timed-out' | 'call.in-progress.error-sip-telephony-provider-failed-to-connect-call' | 'call.ringing.hook-executed-say' | 'call.ringing.hook-executed-transfer' | 'twilio-failed-to-connect-call' | 'twilio-reported-customer-misdialed' | 'vonage-rejected' | 'voicemail';
12553
13729
  /** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
12554
13730
  messages?: (UserMessage | SystemMessage | BotMessage | ToolCallMessage | ToolCallResultMessage)[];
12555
13731
  /** These are the conversation messages of the call. This is only sent if the status is "forwarding". */
12556
13732
  messagesOpenAIFormatted?: OpenAIMessage[];
12557
13733
  /** This is the destination the call is being transferred to. This is only sent if the status is "forwarding". */
12558
13734
  destination?: TransferDestinationNumber | TransferDestinationSip;
12559
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12560
- timestamp?: string;
13735
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13736
+ timestamp?: number;
12561
13737
  /**
12562
13738
  * This is a live version of the `call.artifact`.
12563
13739
  *
@@ -12616,8 +13792,8 @@ export interface ServerMessageToolCalls {
12616
13792
  type?: 'tool-calls';
12617
13793
  /** This is the list of tools calls that the model is requesting along with the original tool configuration. */
12618
13794
  toolWithToolCallList: (FunctionToolWithToolCall | GhlToolWithToolCall | MakeToolWithToolCall | BashToolWithToolCall | ComputerToolWithToolCall | TextEditorToolWithToolCall | GoogleCalendarCreateEventToolWithToolCall)[];
12619
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12620
- timestamp?: string;
13795
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13796
+ timestamp?: number;
12621
13797
  /**
12622
13798
  * This is a live version of the `call.artifact`.
12623
13799
  *
@@ -12666,8 +13842,8 @@ export interface ServerMessageTransferDestinationRequest {
12666
13842
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12667
13843
  /** This is the type of the message. "transfer-destination-request" is sent when the model is requesting transfer but destination is unknown. */
12668
13844
  type: 'transfer-destination-request';
12669
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12670
- timestamp?: string;
13845
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13846
+ timestamp?: number;
12671
13847
  /**
12672
13848
  * This is a live version of the `call.artifact`.
12673
13849
  *
@@ -12716,8 +13892,8 @@ export interface ServerMessageTransferUpdate {
12716
13892
  type: 'transfer-update';
12717
13893
  /** This is the destination of the transfer. */
12718
13894
  destination?: TransferDestinationAssistant | TransferDestinationStep | TransferDestinationNumber | TransferDestinationSip;
12719
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12720
- timestamp?: string;
13895
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13896
+ timestamp?: number;
12721
13897
  /**
12722
13898
  * This is a live version of the `call.artifact`.
12723
13899
  *
@@ -12772,8 +13948,8 @@ export interface ServerMessageTranscript {
12772
13948
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12773
13949
  /** This is the type of the message. "transcript" is sent as transcriber outputs partial or final transcript. */
12774
13950
  type: 'transcript' | "transcript[transcriptType='final']";
12775
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12776
- timestamp?: string;
13951
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
13952
+ timestamp?: number;
12777
13953
  /**
12778
13954
  * This is a live version of the `call.artifact`.
12779
13955
  *
@@ -12826,8 +14002,8 @@ export interface ServerMessageUserInterrupted {
12826
14002
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12827
14003
  /** This is the type of the message. "user-interrupted" is sent when the user interrupts the assistant. */
12828
14004
  type: 'user-interrupted';
12829
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12830
- timestamp?: string;
14005
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14006
+ timestamp?: number;
12831
14007
  /**
12832
14008
  * This is a live version of the `call.artifact`.
12833
14009
  *
@@ -12874,8 +14050,8 @@ export interface ServerMessageLanguageChangeDetected {
12874
14050
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12875
14051
  /** This is the type of the message. "language-change-detected" is sent when the transcriber is automatically switched based on the detected language. */
12876
14052
  type: 'language-change-detected';
12877
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12878
- timestamp?: string;
14053
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14054
+ timestamp?: number;
12879
14055
  /**
12880
14056
  * This is a live version of the `call.artifact`.
12881
14057
  *
@@ -12924,8 +14100,8 @@ export interface ServerMessageVoiceInput {
12924
14100
  phoneNumber?: CreateByoPhoneNumberDTO | CreateTwilioPhoneNumberDTO | CreateVonagePhoneNumberDTO | CreateVapiPhoneNumberDTO;
12925
14101
  /** This is the type of the message. "voice-input" is sent when a generation is requested from voice provider. */
12926
14102
  type: 'voice-input';
12927
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
12928
- timestamp?: string;
14103
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14104
+ timestamp?: number;
12929
14105
  /**
12930
14106
  * This is a live version of the `call.artifact`.
12931
14107
  *
@@ -12997,8 +14173,8 @@ export interface ServerMessageVoiceRequest {
12997
14173
  * ```
12998
14174
  */
12999
14175
  type: 'voice-request';
13000
- /** This is the ISO-8601 formatted timestamp of when the message was sent. */
13001
- timestamp?: string;
14176
+ /** This is the timestamp of when the message was sent in milliseconds since Unix Epoch. */
14177
+ timestamp?: number;
13002
14178
  /**
13003
14179
  * This is a live version of the `call.artifact`.
13004
14180
  *
@@ -13815,7 +14991,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13815
14991
  * @request POST:/call
13816
14992
  * @secure
13817
14993
  */
13818
- callControllerCreate: (data: CreateCallDTO, params?: RequestParams) => Promise<HttpResponse<Call, any>>;
14994
+ callControllerCreate: (data: CreateCallDTO, params?: RequestParams) => Promise<HttpResponse<Call | CallBatchResponse, any>>;
13819
14995
  /**
13820
14996
  * No description
13821
14997
  *
@@ -13923,7 +15099,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
13923
15099
  * @deprecated
13924
15100
  * @secure
13925
15101
  */
13926
- callControllerCreatePhoneCall: (data: CreateOutboundCallDTO, params?: RequestParams) => Promise<HttpResponse<Call, any>>;
15102
+ callControllerCreatePhoneCall: (data: CreateOutboundCallDTO, params?: RequestParams) => Promise<HttpResponse<Call | CallBatchResponse, any>>;
13927
15103
  /**
13928
15104
  * No description
13929
15105
  *
@@ -14612,7 +15788,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14612
15788
  type: 'google.calendar.event.create';
14613
15789
  } & CreateGoogleCalendarCreateEventToolDTO) | ({
14614
15790
  type: 'google.sheets.row.append';
14615
- } & CreateGoogleSheetsRowAppendToolDTO), params?: RequestParams) => Promise<HttpResponse<({
15791
+ } & CreateGoogleSheetsRowAppendToolDTO) | ({
15792
+ type: 'google.calendar.availability.check';
15793
+ } & CreateGoogleCalendarCheckAvailabilityToolDTO) | ({
15794
+ type: 'slack.message.send';
15795
+ } & CreateSlackSendMessageToolDTO) | ({
15796
+ type: 'sms';
15797
+ } & CreateSmsSendToolDTO) | ({
15798
+ type: 'mcp';
15799
+ } & CreateMcpToolDTO), params?: RequestParams) => Promise<HttpResponse<({
14616
15800
  type: 'dtmf';
14617
15801
  } & DtmfTool) | ({
14618
15802
  type: 'endCall';
@@ -14638,7 +15822,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14638
15822
  type: 'google.calendar.event.create';
14639
15823
  } & GoogleCalendarCreateEventTool) | ({
14640
15824
  type: 'google.sheets.row.append';
14641
- } & GoogleSheetsRowAppendTool), any>>;
15825
+ } & GoogleSheetsRowAppendTool) | ({
15826
+ type: 'google.calendar.availability.check';
15827
+ } & GoogleCalendarCheckAvailabilityTool) | ({
15828
+ type: 'slack.message.send';
15829
+ } & SlackSendMessageTool) | ({
15830
+ type: 'sms';
15831
+ } & SmsSendTool) | ({
15832
+ type: 'mcp';
15833
+ } & McpTool), any>>;
14642
15834
  /**
14643
15835
  * No description
14644
15836
  *
@@ -14721,7 +15913,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14721
15913
  type: 'google.calendar.event.create';
14722
15914
  } & GoogleCalendarCreateEventTool) | ({
14723
15915
  type: 'google.sheets.row.append';
14724
- } & GoogleSheetsRowAppendTool))[], any>>;
15916
+ } & GoogleSheetsRowAppendTool) | ({
15917
+ type: 'google.calendar.availability.check';
15918
+ } & GoogleCalendarCheckAvailabilityTool) | ({
15919
+ type: 'slack.message.send';
15920
+ } & SlackSendMessageTool) | ({
15921
+ type: 'sms';
15922
+ } & SmsSendTool) | ({
15923
+ type: 'mcp';
15924
+ } & McpTool))[], any>>;
14725
15925
  /**
14726
15926
  * No description
14727
15927
  *
@@ -14757,7 +15957,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14757
15957
  type: 'google.calendar.event.create';
14758
15958
  } & GoogleCalendarCreateEventTool) | ({
14759
15959
  type: 'google.sheets.row.append';
14760
- } & GoogleSheetsRowAppendTool), any>>;
15960
+ } & GoogleSheetsRowAppendTool) | ({
15961
+ type: 'google.calendar.availability.check';
15962
+ } & GoogleCalendarCheckAvailabilityTool) | ({
15963
+ type: 'slack.message.send';
15964
+ } & SlackSendMessageTool) | ({
15965
+ type: 'sms';
15966
+ } & SmsSendTool) | ({
15967
+ type: 'mcp';
15968
+ } & McpTool), any>>;
14761
15969
  /**
14762
15970
  * No description
14763
15971
  *
@@ -14793,7 +16001,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14793
16001
  type: 'google.calendar.event.create';
14794
16002
  } & UpdateGoogleCalendarCreateEventToolDTO) | ({
14795
16003
  type: 'google.sheets.row.append';
14796
- } & UpdateGoogleSheetsRowAppendToolDTO), params?: RequestParams) => Promise<HttpResponse<({
16004
+ } & UpdateGoogleSheetsRowAppendToolDTO) | ({
16005
+ type: 'google.calendar.availability.check';
16006
+ } & UpdateGoogleCalendarCheckAvailabilityToolDTO) | ({
16007
+ type: 'slack.message.send';
16008
+ } & UpdateSlackSendMessageToolDTO) | ({
16009
+ type: 'sms';
16010
+ } & UpdateSmsSendToolDTO) | ({
16011
+ type: 'mcp';
16012
+ } & UpdateMcpToolDTO), params?: RequestParams) => Promise<HttpResponse<({
14797
16013
  type: 'dtmf';
14798
16014
  } & DtmfTool) | ({
14799
16015
  type: 'endCall';
@@ -14819,7 +16035,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14819
16035
  type: 'google.calendar.event.create';
14820
16036
  } & GoogleCalendarCreateEventTool) | ({
14821
16037
  type: 'google.sheets.row.append';
14822
- } & GoogleSheetsRowAppendTool), any>>;
16038
+ } & GoogleSheetsRowAppendTool) | ({
16039
+ type: 'google.calendar.availability.check';
16040
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16041
+ type: 'slack.message.send';
16042
+ } & SlackSendMessageTool) | ({
16043
+ type: 'sms';
16044
+ } & SmsSendTool) | ({
16045
+ type: 'mcp';
16046
+ } & McpTool), any>>;
14823
16047
  /**
14824
16048
  * No description
14825
16049
  *
@@ -14855,7 +16079,15 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
14855
16079
  type: 'google.calendar.event.create';
14856
16080
  } & GoogleCalendarCreateEventTool) | ({
14857
16081
  type: 'google.sheets.row.append';
14858
- } & GoogleSheetsRowAppendTool), any>>;
16082
+ } & GoogleSheetsRowAppendTool) | ({
16083
+ type: 'google.calendar.availability.check';
16084
+ } & GoogleCalendarCheckAvailabilityTool) | ({
16085
+ type: 'slack.message.send';
16086
+ } & SlackSendMessageTool) | ({
16087
+ type: 'sms';
16088
+ } & SmsSendTool) | ({
16089
+ type: 'mcp';
16090
+ } & McpTool), any>>;
14859
16091
  };
14860
16092
  file: {
14861
16093
  /**
@@ -15975,7 +17207,101 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
15975
17207
  * @request POST:/credential
15976
17208
  * @secure
15977
17209
  */
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>>;
17210
+ credentialControllerCreate: (data: ({
17211
+ provider: '11labs';
17212
+ } & CreateElevenLabsCredentialDTO) | ({
17213
+ provider: 'anthropic';
17214
+ } & CreateAnthropicCredentialDTO) | ({
17215
+ provider: 'anyscale';
17216
+ } & CreateAnyscaleCredentialDTO) | ({
17217
+ provider: 'assembly-ai';
17218
+ } & CreateAssemblyAICredentialDTO) | ({
17219
+ provider: 'azure-openai';
17220
+ } & CreateAzureOpenAICredentialDTO) | ({
17221
+ provider: 'azure';
17222
+ } & CreateAzureCredentialDTO) | ({
17223
+ provider: 'byo-sip-trunk';
17224
+ } & CreateByoSipTrunkCredentialDTO) | ({
17225
+ provider: 'cartesia';
17226
+ } & CreateCartesiaCredentialDTO) | ({
17227
+ provider: 'cerebras';
17228
+ } & CreateCerebrasCredentialDTO) | ({
17229
+ provider: 'cloudflare';
17230
+ } & CreateCloudflareCredentialDTO) | ({
17231
+ provider: 'custom-llm';
17232
+ } & CreateCustomLLMCredentialDTO) | ({
17233
+ provider: 'deepgram';
17234
+ } & CreateDeepgramCredentialDTO) | ({
17235
+ provider: 'deepinfra';
17236
+ } & CreateDeepInfraCredentialDTO) | ({
17237
+ provider: 'deep-seek';
17238
+ } & CreateDeepSeekCredentialDTO) | ({
17239
+ provider: 'gcp';
17240
+ } & CreateGcpCredentialDTO) | ({
17241
+ provider: 'gladia';
17242
+ } & CreateGladiaCredentialDTO) | ({
17243
+ provider: 'gohighlevel';
17244
+ } & CreateGoHighLevelCredentialDTO) | ({
17245
+ provider: 'google';
17246
+ } & CreateGoogleCredentialDTO) | ({
17247
+ provider: 'groq';
17248
+ } & CreateGroqCredentialDTO) | ({
17249
+ provider: 'inflection-ai';
17250
+ } & CreateInflectionAICredentialDTO) | ({
17251
+ provider: 'langfuse';
17252
+ } & CreateLangfuseCredentialDTO) | ({
17253
+ provider: 'lmnt';
17254
+ } & CreateLmntCredentialDTO) | ({
17255
+ provider: 'make';
17256
+ } & CreateMakeCredentialDTO) | ({
17257
+ provider: 'openai';
17258
+ } & CreateOpenAICredentialDTO) | ({
17259
+ provider: 'openrouter';
17260
+ } & CreateOpenRouterCredentialDTO) | ({
17261
+ provider: 'perplexity-ai';
17262
+ } & CreatePerplexityAICredentialDTO) | ({
17263
+ provider: 'playht';
17264
+ } & CreatePlayHTCredentialDTO) | ({
17265
+ provider: 'rime-ai';
17266
+ } & CreateRimeAICredentialDTO) | ({
17267
+ provider: 'runpod';
17268
+ } & CreateRunpodCredentialDTO) | ({
17269
+ provider: 's3';
17270
+ } & CreateS3CredentialDTO) | ({
17271
+ provider: 'supabase';
17272
+ } & CreateSupabaseCredentialDTO) | ({
17273
+ provider: 'smallest-ai';
17274
+ } & CreateSmallestAICredentialDTO) | ({
17275
+ provider: 'tavus';
17276
+ } & CreateTavusCredentialDTO) | ({
17277
+ provider: 'together-ai';
17278
+ } & CreateTogetherAICredentialDTO) | ({
17279
+ provider: 'twilio';
17280
+ } & CreateTwilioCredentialDTO) | ({
17281
+ provider: 'vonage';
17282
+ } & CreateVonageCredentialDTO) | ({
17283
+ provider: 'webhook';
17284
+ } & CreateWebhookCredentialDTO) | ({
17285
+ provider: 'xai';
17286
+ } & CreateXAiCredentialDTO) | ({
17287
+ provider: 'neuphonic';
17288
+ } & CreateNeuphonicCredentialDTO) | ({
17289
+ provider: 'hume';
17290
+ } & CreateHumeCredentialDTO) | ({
17291
+ provider: 'mistral';
17292
+ } & CreateMistralCredentialDTO) | ({
17293
+ provider: 'speechmatics';
17294
+ } & CreateSpeechmaticsCredentialDTO) | ({
17295
+ provider: 'trieve';
17296
+ } & CreateTrieveCredentialDTO) | ({
17297
+ provider: 'google.calendar.oauth2-client';
17298
+ } & CreateGoogleCalendarOAuth2ClientCredentialDTO) | ({
17299
+ provider: 'google.calendar.oauth2-authorization';
17300
+ } & CreateGoogleCalendarOAuth2AuthorizationCredentialDTO) | ({
17301
+ provider: 'google.sheets.oauth2-authorization';
17302
+ } & CreateGoogleSheetsOAuth2AuthorizationCredentialDTO) | ({
17303
+ provider: 'slack.oauth2-authorization';
17304
+ } & CreateSlackOAuth2AuthorizationCredentialDTO), params?: RequestParams) => Promise<HttpResponse<any, any>>;
15979
17305
  /**
15980
17306
  * No description
15981
17307
  *
@@ -16032,7 +17358,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16032
17358
  * @format date-time
16033
17359
  */
16034
17360
  updatedAtLe?: string;
16035
- }, params?: RequestParams) => Promise<HttpResponse<(AnthropicCredential | AnyscaleCredential | AssemblyAICredential | AzureCredential | AzureOpenAICredential | ByoSipTrunkCredential | CartesiaCredential | CerebrasCredential | CloudflareCredential | CustomLLMCredential | DeepgramCredential | DeepInfraCredential | DeepSeekCredential | ElevenLabsCredential | GcpCredential | GladiaCredential | GoHighLevelCredential | GoogleCredential | GroqCredential | HumeCredential | InflectionAICredential | LangfuseCredential | LmntCredential | MakeCredential | MistralCredential | NeuphonicCredential | OpenAICredential | OpenRouterCredential | PerplexityAICredential | PlayHTCredential | RimeAICredential | RunpodCredential | S3Credential | SmallestAICredential | SpeechmaticsCredential | SupabaseCredential | TavusCredential | TogetherAICredential | TrieveCredential | TwilioCredential | VonageCredential | WebhookCredential | XAiCredential | GoogleCalendarOAuth2ClientCredential | GoogleCalendarOAuth2AuthorizationCredential)[], any>>;
17361
+ }, params?: RequestParams) => Promise<HttpResponse<any[], any>>;
16036
17362
  /**
16037
17363
  * No description
16038
17364
  *
@@ -16042,7 +17368,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16042
17368
  * @request GET:/credential/{id}
16043
17369
  * @secure
16044
17370
  */
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>>;
17371
+ credentialControllerFindOne: (id: string, params?: RequestParams) => Promise<HttpResponse<any, any>>;
16046
17372
  /**
16047
17373
  * No description
16048
17374
  *
@@ -16052,7 +17378,85 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16052
17378
  * @request PATCH:/credential/{id}
16053
17379
  * @secure
16054
17380
  */
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>>;
17381
+ credentialControllerUpdate: (id: string, data: ({
17382
+ provider: '11labs';
17383
+ } & UpdateElevenLabsCredentialDTO) | ({
17384
+ provider: 'anthropic';
17385
+ } & UpdateAnthropicCredentialDTO) | ({
17386
+ provider: 'anyscale';
17387
+ } & UpdateAnyscaleCredentialDTO) | ({
17388
+ provider: 'assembly-ai';
17389
+ } & UpdateAssemblyAICredentialDTO) | ({
17390
+ provider: 'azure-openai';
17391
+ } & UpdateAzureOpenAICredentialDTO) | ({
17392
+ provider: 'azure';
17393
+ } & UpdateAzureCredentialDTO) | ({
17394
+ provider: 'byo-sip-trunk';
17395
+ } & UpdateByoSipTrunkCredentialDTO) | ({
17396
+ provider: 'cartesia';
17397
+ } & UpdateCartesiaCredentialDTO) | ({
17398
+ provider: 'cerebras';
17399
+ } & UpdateCerebrasCredentialDTO) | ({
17400
+ provider: 'custom-llm';
17401
+ } & UpdateCustomLLMCredentialDTO) | ({
17402
+ provider: 'deepgram';
17403
+ } & UpdateDeepgramCredentialDTO) | ({
17404
+ provider: 'deepinfra';
17405
+ } & UpdateDeepInfraCredentialDTO) | ({
17406
+ provider: 'deep-seek';
17407
+ } & UpdateDeepSeekCredentialDTO) | ({
17408
+ provider: 'gcp';
17409
+ } & UpdateGcpCredentialDTO) | ({
17410
+ provider: 'gladia';
17411
+ } & UpdateGladiaCredentialDTO) | ({
17412
+ provider: 'gohighlevel';
17413
+ } & UpdateGoHighLevelCredentialDTO) | ({
17414
+ provider: 'google';
17415
+ } & UpdateGoogleCredentialDTO) | ({
17416
+ provider: 'groq';
17417
+ } & UpdateGroqCredentialDTO) | ({
17418
+ provider: 'inflection-ai';
17419
+ } & UpdateInflectionAICredentialDTO) | ({
17420
+ provider: 'langfuse';
17421
+ } & UpdateLangfuseCredentialDTO) | ({
17422
+ provider: 'lmnt';
17423
+ } & UpdateLmntCredentialDTO) | ({
17424
+ provider: 'make';
17425
+ } & UpdateMakeCredentialDTO) | ({
17426
+ provider: 'openai';
17427
+ } & UpdateOpenAICredentialDTO) | ({
17428
+ provider: 'openrouter';
17429
+ } & UpdateOpenRouterCredentialDTO) | ({
17430
+ provider: 'perplexity-ai';
17431
+ } & UpdatePerplexityAICredentialDTO) | ({
17432
+ provider: 'playht';
17433
+ } & UpdatePlayHTCredentialDTO) | ({
17434
+ provider: 'rime-ai';
17435
+ } & UpdateRimeAICredentialDTO) | ({
17436
+ provider: 'runpod';
17437
+ } & UpdateRunpodCredentialDTO) | ({
17438
+ provider: 's3';
17439
+ } & UpdateS3CredentialDTO) | ({
17440
+ provider: 'supabase';
17441
+ } & UpdateSupabaseCredentialDTO) | ({
17442
+ provider: 'smallest-ai';
17443
+ } & UpdateSmallestAICredentialDTO) | ({
17444
+ provider: 'neuphonic';
17445
+ } & UpdateNeuphonicCredentialDTO) | ({
17446
+ provider: 'hume';
17447
+ } & UpdateHumeCredentialDTO) | ({
17448
+ provider: 'tavus';
17449
+ } & UpdateTavusCredentialDTO) | ({
17450
+ provider: 'together-ai';
17451
+ } & UpdateTogetherAICredentialDTO) | ({
17452
+ provider: 'twilio';
17453
+ } & UpdateTwilioCredentialDTO) | ({
17454
+ provider: 'vonage';
17455
+ } & UpdateVonageCredentialDTO) | ({
17456
+ provider: 'webhook';
17457
+ } & UpdateWebhookCredentialDTO) | ({
17458
+ provider: 'xai';
17459
+ } & UpdateXAiCredentialDTO), params?: RequestParams) => Promise<HttpResponse<any, any>>;
16056
17460
  /**
16057
17461
  * No description
16058
17462
  *
@@ -16062,7 +17466,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16062
17466
  * @request DELETE:/credential/{id}
16063
17467
  * @secure
16064
17468
  */
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>>;
17469
+ credentialControllerRemove: (id: string, params?: RequestParams) => Promise<HttpResponse<any, any>>;
16066
17470
  /**
16067
17471
  * No description
16068
17472
  *
@@ -16298,6 +17702,16 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16298
17702
  * @secure
16299
17703
  */
16300
17704
  voiceLibraryControllerVoiceLibrarySyncDefaultVoices: (data: SyncVoiceLibraryDTO, params?: RequestParams) => Promise<HttpResponse<VoiceLibrary[], any>>;
17705
+ /**
17706
+ * No description
17707
+ *
17708
+ * @tags Voice Library
17709
+ * @name VoiceLibraryControllerVoiceLibraryCreateSesameVoice
17710
+ * @summary Create a new voice in the Voice Library using Sesame
17711
+ * @request POST:/voice-library/create-sesame-voice
17712
+ * @secure
17713
+ */
17714
+ voiceLibraryControllerVoiceLibraryCreateSesameVoice: (data: CreateSesameVoiceDTO, params?: RequestParams) => Promise<HttpResponse<void, any>>;
16301
17715
  };
16302
17716
  provider: {
16303
17717
  /**
@@ -16308,7 +17722,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16308
17722
  * @request GET:/{provider}/workflows
16309
17723
  * @secure
16310
17724
  */
16311
- providerControllerGetWorkflows: (provider: 'make' | 'ghl' | 'google.calendar', query?: {
17725
+ providerControllerGetWorkflows: (provider: 'make' | 'ghl' | 'google.calendar' | 'slack' | 'mcp', query?: {
16312
17726
  locationId?: string;
16313
17727
  }, params?: RequestParams) => Promise<HttpResponse<object, any>>;
16314
17728
  /**
@@ -16319,7 +17733,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16319
17733
  * @request GET:/{provider}/workflows/{workflowId}/hooks
16320
17734
  * @secure
16321
17735
  */
16322
- providerControllerGetWorkflowTriggerHook: (provider: 'make' | 'ghl' | 'google.calendar', workflowId: string, params?: RequestParams) => Promise<HttpResponse<object, any>>;
17736
+ providerControllerGetWorkflowTriggerHook: (provider: 'make' | 'ghl' | 'google.calendar' | 'slack' | 'mcp', workflowId: string, params?: RequestParams) => Promise<HttpResponse<object, any>>;
16323
17737
  /**
16324
17738
  * No description
16325
17739
  *
@@ -16328,7 +17742,7 @@ export declare class Api<SecurityDataType extends unknown> extends HttpClient<Se
16328
17742
  * @request GET:/{provider}/locations
16329
17743
  * @secure
16330
17744
  */
16331
- providerControllerGetLocations: (provider: 'make' | 'ghl' | 'google.calendar', params?: RequestParams) => Promise<HttpResponse<object, any>>;
17745
+ providerControllerGetLocations: (provider: 'make' | 'ghl' | 'google.calendar' | 'slack' | 'mcp', params?: RequestParams) => Promise<HttpResponse<object, any>>;
16332
17746
  /**
16333
17747
  * No description
16334
17748
  *