diff --git a/package.json b/package.json
index e323279..d4eb4cb 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@vapi-ai/server-sdk",
- "version": "0.11.0",
+ "version": "0.12.0",
"private": false,
"repository": "github:VapiAI/server-sdk-typescript",
"type": "commonjs",
diff --git a/reference.md b/reference.md
index 869d295..f6693e1 100644
--- a/reference.md
+++ b/reference.md
@@ -618,7 +618,10 @@ await client.calls.create();
```typescript
-await client.calls.callControllerFindAllPaginated();
+await client.calls.callControllerFindAllPaginated({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ customerNumberAny: "+1234567890,+0987654321"
+});
```
@@ -821,7 +824,9 @@ await client.calls.update({
```typescript
-await client.chats.list();
+await client.chats.list({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3"
+});
```
@@ -918,6 +923,57 @@ await client.chats.create({
+
+
+
+
+client.chats.chatControllerChatsExport({ ...params }) -> void
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```typescript
+await client.chats.chatControllerChatsExport({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3"
+});
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `Vapi.ChatControllerChatsExportRequest`
+
+
+
+
+
+-
+
+**requestOptions:** `ChatsClient.RequestOptions`
+
+
+
+
+
+
+
@@ -1139,9 +1195,7 @@ await client.campaigns.campaignControllerFindAll();
```typescript
await client.campaigns.campaignControllerCreate({
- name: "Q2 Sales Campaign",
- phoneNumberId: "phoneNumberId",
- customers: [{}]
+ name: "Q2 Sales Campaign"
});
```
@@ -1345,7 +1399,10 @@ await client.campaigns.campaignControllerUpdate({
```typescript
-await client.sessions.list();
+await client.sessions.list({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ customerNumberAny: "+1234567890,+0987654321"
+});
```
@@ -1426,6 +1483,58 @@ await client.sessions.create();
+
+
+
+
+client.sessions.sessionControllerSessionsExport({ ...params }) -> void
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```typescript
+await client.sessions.sessionControllerSessionsExport({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ customerNumberAny: "+1234567890,+0987654321"
+});
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `Vapi.SessionControllerSessionsExportRequest`
+
+
+
+
+
+-
+
+**requestOptions:** `SessionsClient.RequestOptions`
+
+
+
+
+
+
+
@@ -2141,6 +2250,47 @@ await client.tools.update({
+
+
+
+
+client.tools.toolControllerTestCodeExecution() -> Vapi.ToolControllerTestCodeExecutionResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```typescript
+await client.tools.toolControllerTestCodeExecution();
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**requestOptions:** `ToolsClient.RequestOptions`
+
+
+
+
+
+
+
@@ -2696,71 +2846,6 @@ await client.structuredOutputs.structuredOutputControllerRun({
-
-
-
-
-client.structuredOutputs.structuredOutputControllerSuggest({ ...params }) -> Record[]
-
--
-
-#### 📝 Description
-
-
--
-
-
--
-
-Analyzes assistant configuration and generates contextual structured output recommendations
-
-
-
-
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```typescript
-await client.structuredOutputs.structuredOutputControllerSuggest({
- assistantId: "550e8400-e29b-41d4-a716-446655440000"
-});
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**request:** `Vapi.GenerateStructuredOutputSuggestionsDto`
-
-
-
-
-
--
-
-**requestOptions:** `StructuredOutputsClient.RequestOptions`
-
-
-
-
-
-
-
diff --git a/src/BaseClient.ts b/src/BaseClient.ts
index 31a3ffb..afdef26 100644
--- a/src/BaseClient.ts
+++ b/src/BaseClient.ts
@@ -40,8 +40,8 @@ export function normalizeClientOptions(options: T):
{
"X-Fern-Language": "JavaScript",
"X-Fern-SDK-Name": "@vapi-ai/server-sdk",
- "X-Fern-SDK-Version": "0.11.0",
- "User-Agent": "@vapi-ai/server-sdk/0.11.0",
+ "X-Fern-SDK-Version": "0.12.0",
+ "User-Agent": "@vapi-ai/server-sdk/0.12.0",
"X-Fern-Runtime": core.RUNTIME.type,
"X-Fern-Runtime-Version": core.RUNTIME.version,
},
diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts b/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts
index d0a94e1..2244585 100644
--- a/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts
+++ b/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts
@@ -53,4 +53,5 @@ export type UpdateAssistantDtoCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts b/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts
index d6899d9..bf4e64d 100644
--- a/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts
+++ b/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts
@@ -16,6 +16,7 @@ export type UpdateAssistantDtoVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/resources/calls/client/Client.ts b/src/api/resources/calls/client/Client.ts
index a437185..3c79dfe 100644
--- a/src/api/resources/calls/client/Client.ts
+++ b/src/api/resources/calls/client/Client.ts
@@ -229,7 +229,10 @@ export class CallsClient {
* @param {CallsClient.RequestOptions} requestOptions - Request-specific configuration.
*
* @example
- * await client.calls.callControllerFindAllPaginated()
+ * await client.calls.callControllerFindAllPaginated({
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ * customerNumberAny: "+1234567890,+0987654321"
+ * })
*/
public callControllerFindAllPaginated(
request: Vapi.CallControllerFindAllPaginatedRequest = {},
@@ -243,8 +246,10 @@ export class CallsClient {
requestOptions?: CallsClient.RequestOptions,
): Promise> {
const {
+ assistantIdAny,
assistantOverrides,
customer,
+ customerNumberAny,
assistantId,
assistantName,
squadId,
@@ -257,6 +262,7 @@ export class CallsClient {
successEvaluation,
endedReason,
phoneNumberId,
+ phoneNumberIdAny,
structuredOutputs,
score,
page,
@@ -272,6 +278,10 @@ export class CallsClient {
updatedAtLe,
} = request;
const _queryParams: Record = {};
+ if (assistantIdAny != null) {
+ _queryParams.assistantIdAny = assistantIdAny;
+ }
+
if (assistantOverrides != null) {
_queryParams.assistantOverrides = toJson(assistantOverrides);
}
@@ -280,6 +290,10 @@ export class CallsClient {
_queryParams.customer = toJson(customer);
}
+ if (customerNumberAny != null) {
+ _queryParams.customerNumberAny = customerNumberAny;
+ }
+
if (assistantId != null) {
_queryParams.assistantId = assistantId;
}
@@ -332,6 +346,14 @@ export class CallsClient {
_queryParams.phoneNumberId = phoneNumberId;
}
+ if (phoneNumberIdAny != null) {
+ if (Array.isArray(phoneNumberIdAny)) {
+ _queryParams.phoneNumberIdAny = phoneNumberIdAny.map((item) => item);
+ } else {
+ _queryParams.phoneNumberIdAny = phoneNumberIdAny;
+ }
+ }
+
if (structuredOutputs != null) {
_queryParams.structuredOutputs = toJson(structuredOutputs);
}
diff --git a/src/api/resources/calls/client/requests/CallControllerFindAllPaginatedRequest.ts b/src/api/resources/calls/client/requests/CallControllerFindAllPaginatedRequest.ts
index 59613fe..4e35240 100644
--- a/src/api/resources/calls/client/requests/CallControllerFindAllPaginatedRequest.ts
+++ b/src/api/resources/calls/client/requests/CallControllerFindAllPaginatedRequest.ts
@@ -4,13 +4,20 @@ import type * as Vapi from "../../../../index.js";
/**
* @example
- * {}
+ * {
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ * customerNumberAny: "+1234567890,+0987654321"
+ * }
*/
export interface CallControllerFindAllPaginatedRequest {
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
/** Filter by assistant overrides. Use variableValues to filter by template variables. */
assistantOverrides?: Record;
/** Filter by customer properties. Supports filtering by number, name, externalId, and extension. */
customer?: Record;
+ /** Filter by any of the specified customer phone numbers (comma-separated). */
+ customerNumberAny?: string;
/** This will return calls with the specified assistantId. */
assistantId?: string;
/** This will return calls where the transient assistant name exactly matches the specified value (case-insensitive). */
@@ -35,6 +42,8 @@ export interface CallControllerFindAllPaginatedRequest {
endedReason?: string;
/** This will return calls with the specified phoneNumberId. */
phoneNumberId?: string;
+ /** This will return calls with any of the specified phoneNumberIds. */
+ phoneNumberIdAny?: string | string[];
/** Filter calls by structured output values. Use structured output ID as key and filter operators as values. */
structuredOutputs?: Record;
/** Filter calls by the first scorecard's normalized score. */
diff --git a/src/api/resources/campaigns/client/Client.ts b/src/api/resources/campaigns/client/Client.ts
index 3f8acca..e247c5c 100644
--- a/src/api/resources/campaigns/client/Client.ts
+++ b/src/api/resources/campaigns/client/Client.ts
@@ -163,9 +163,7 @@ export class CampaignsClient {
*
* @example
* await client.campaigns.campaignControllerCreate({
- * name: "Q2 Sales Campaign",
- * phoneNumberId: "phoneNumberId",
- * customers: [{}]
+ * name: "Q2 Sales Campaign"
* })
*/
public campaignControllerCreate(
diff --git a/src/api/resources/campaigns/client/requests/CreateCampaignDto.ts b/src/api/resources/campaigns/client/requests/CreateCampaignDto.ts
index 19245af..ebfd1b6 100644
--- a/src/api/resources/campaigns/client/requests/CreateCampaignDto.ts
+++ b/src/api/resources/campaigns/client/requests/CreateCampaignDto.ts
@@ -5,22 +5,24 @@ import type * as Vapi from "../../../../index.js";
/**
* @example
* {
- * name: "Q2 Sales Campaign",
- * phoneNumberId: "phoneNumberId",
- * customers: [{}]
+ * name: "Q2 Sales Campaign"
* }
*/
export interface CreateCampaignDto {
/** This is the name of the campaign. This is just for your own reference. */
name: string;
- /** This is the assistant ID that will be used for the campaign calls. Note: Either assistantId or workflowId can be used, but not both. */
+ /** This is the assistant ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used. */
assistantId?: string;
- /** This is the workflow ID that will be used for the campaign calls. Note: Either assistantId or workflowId can be used, but not both. */
+ /** This is the workflow ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used. */
workflowId?: string;
- /** This is the phone number ID that will be used for the campaign calls. */
- phoneNumberId: string;
+ /** This is the squad ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used. */
+ squadId?: string;
+ /** This is the phone number ID that will be used for the campaign calls. Required if dialPlan is not provided. Note: phoneNumberId and dialPlan are mutually exclusive. */
+ phoneNumberId?: string;
+ /** This is a list of dial entries, each specifying a phone number and the customers to call using that number. Use this when you want different phone numbers to call different sets of customers. Note: phoneNumberId and dialPlan are mutually exclusive. */
+ dialPlan?: Vapi.DialPlanEntry[];
/** This is the schedule plan for the campaign. Calls will start at startedAt and continue until your organization’s concurrency limit is reached. Any remaining calls will be retried for up to one hour as capacity becomes available. After that hour or after latestAt, whichever comes first, any calls that couldn’t be placed won’t be retried. */
schedulePlan?: Vapi.SchedulePlan;
- /** These are the customers that will be called in the campaign. */
- customers: Vapi.CreateCustomerDto[];
+ /** These are the customers that will be called in the campaign. Required if dialPlan is not provided. */
+ customers?: Vapi.CreateCustomerDto[];
}
diff --git a/src/api/resources/campaigns/client/requests/UpdateCampaignDto.ts b/src/api/resources/campaigns/client/requests/UpdateCampaignDto.ts
index 1f28abd..03f7e37 100644
--- a/src/api/resources/campaigns/client/requests/UpdateCampaignDto.ts
+++ b/src/api/resources/campaigns/client/requests/UpdateCampaignDto.ts
@@ -22,11 +22,19 @@ export interface UpdateCampaignDto {
* Can only be updated if campaign is not in progress or has ended.
*/
workflowId?: string;
+ /**
+ * This is the squad ID that will be used for the campaign calls.
+ * Can only be updated if campaign is not in progress or has ended.
+ */
+ squadId?: string;
/**
* This is the phone number ID that will be used for the campaign calls.
* Can only be updated if campaign is not in progress or has ended.
+ * Note: `phoneNumberId` and `dialPlan` are mutually exclusive.
*/
phoneNumberId?: string;
+ /** This is a list of dial entries, each specifying a phone number and the customers to call using that number. Can only be updated if campaign is not in progress or has ended. Note: phoneNumberId and dialPlan are mutually exclusive. */
+ dialPlan?: Vapi.DialPlanEntry[];
/**
* This is the schedule plan for the campaign.
* Can only be updated if campaign is not in progress or has ended.
diff --git a/src/api/resources/chats/client/Client.ts b/src/api/resources/chats/client/Client.ts
index ce3a85d..5cc4c55 100644
--- a/src/api/resources/chats/client/Client.ts
+++ b/src/api/resources/chats/client/Client.ts
@@ -26,7 +26,9 @@ export class ChatsClient {
* @param {ChatsClient.RequestOptions} requestOptions - Request-specific configuration.
*
* @example
- * await client.chats.list()
+ * await client.chats.list({
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3"
+ * })
*/
public list(
request: Vapi.ListChatsRequest = {},
@@ -40,7 +42,9 @@ export class ChatsClient {
requestOptions?: ChatsClient.RequestOptions,
): Promise> {
const {
+ id,
assistantId,
+ assistantIdAny,
squadId,
sessionId,
previousChatId,
@@ -57,10 +61,18 @@ export class ChatsClient {
updatedAtLe,
} = request;
const _queryParams: Record = {};
+ if (id != null) {
+ _queryParams.id = id;
+ }
+
if (assistantId != null) {
_queryParams.assistantId = assistantId;
}
+ if (assistantIdAny != null) {
+ _queryParams.assistantIdAny = assistantIdAny;
+ }
+
if (squadId != null) {
_queryParams.squadId = squadId;
}
@@ -242,6 +254,179 @@ export class ChatsClient {
}
}
+ /**
+ * @param {Vapi.ChatControllerChatsExportRequest} request
+ * @param {ChatsClient.RequestOptions} requestOptions - Request-specific configuration.
+ *
+ * @example
+ * await client.chats.chatControllerChatsExport({
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3"
+ * })
+ */
+ public chatControllerChatsExport(
+ request: Vapi.ChatControllerChatsExportRequest = {},
+ requestOptions?: ChatsClient.RequestOptions,
+ ): core.HttpResponsePromise {
+ return core.HttpResponsePromise.fromPromise(this.__chatControllerChatsExport(request, requestOptions));
+ }
+
+ private async __chatControllerChatsExport(
+ request: Vapi.ChatControllerChatsExportRequest = {},
+ requestOptions?: ChatsClient.RequestOptions,
+ ): Promise> {
+ const {
+ id,
+ assistantId,
+ assistantIdAny,
+ squadId,
+ sessionId,
+ previousChatId,
+ columns,
+ email,
+ format,
+ page,
+ sortOrder,
+ limit,
+ createdAtGt,
+ createdAtLt,
+ createdAtGe,
+ createdAtLe,
+ updatedAtGt,
+ updatedAtLt,
+ updatedAtGe,
+ updatedAtLe,
+ } = request;
+ const _queryParams: Record = {};
+ if (id != null) {
+ _queryParams.id = id;
+ }
+
+ if (assistantId != null) {
+ _queryParams.assistantId = assistantId;
+ }
+
+ if (assistantIdAny != null) {
+ _queryParams.assistantIdAny = assistantIdAny;
+ }
+
+ if (squadId != null) {
+ _queryParams.squadId = squadId;
+ }
+
+ if (sessionId != null) {
+ _queryParams.sessionId = sessionId;
+ }
+
+ if (previousChatId != null) {
+ _queryParams.previousChatId = previousChatId;
+ }
+
+ if (columns != null) {
+ _queryParams.columns = columns;
+ }
+
+ if (email != null) {
+ _queryParams.email = email;
+ }
+
+ if (format != null) {
+ _queryParams.format = format;
+ }
+
+ if (page != null) {
+ _queryParams.page = page.toString();
+ }
+
+ if (sortOrder != null) {
+ _queryParams.sortOrder = sortOrder;
+ }
+
+ if (limit != null) {
+ _queryParams.limit = limit.toString();
+ }
+
+ if (createdAtGt != null) {
+ _queryParams.createdAtGt = createdAtGt;
+ }
+
+ if (createdAtLt != null) {
+ _queryParams.createdAtLt = createdAtLt;
+ }
+
+ if (createdAtGe != null) {
+ _queryParams.createdAtGe = createdAtGe;
+ }
+
+ if (createdAtLe != null) {
+ _queryParams.createdAtLe = createdAtLe;
+ }
+
+ if (updatedAtGt != null) {
+ _queryParams.updatedAtGt = updatedAtGt;
+ }
+
+ if (updatedAtLt != null) {
+ _queryParams.updatedAtLt = updatedAtLt;
+ }
+
+ if (updatedAtGe != null) {
+ _queryParams.updatedAtGe = updatedAtGe;
+ }
+
+ if (updatedAtLe != null) {
+ _queryParams.updatedAtLe = updatedAtLe;
+ }
+
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
+ this._options?.headers,
+ mergeOnlyDefinedHeaders({ Authorization: await this._getAuthorizationHeader() }),
+ requestOptions?.headers,
+ );
+ const _response = await (this._options.fetcher ?? core.fetcher)({
+ url: core.url.join(
+ (await core.Supplier.get(this._options.baseUrl)) ??
+ (await core.Supplier.get(this._options.environment)) ??
+ environments.VapiEnvironment.Default,
+ "chat/export",
+ ),
+ method: "GET",
+ headers: _headers,
+ queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
+ abortSignal: requestOptions?.abortSignal,
+ fetchFn: this._options?.fetch,
+ logging: this._options.logging,
+ });
+ if (_response.ok) {
+ return { data: undefined, rawResponse: _response.rawResponse };
+ }
+
+ if (_response.error.reason === "status-code") {
+ throw new errors.VapiError({
+ statusCode: _response.error.statusCode,
+ body: _response.error.body,
+ rawResponse: _response.rawResponse,
+ });
+ }
+
+ switch (_response.error.reason) {
+ case "non-json":
+ throw new errors.VapiError({
+ statusCode: _response.error.statusCode,
+ body: _response.error.rawBody,
+ rawResponse: _response.rawResponse,
+ });
+ case "timeout":
+ throw new errors.VapiTimeoutError("Timeout exceeded when calling GET /chat/export.");
+ case "unknown":
+ throw new errors.VapiError({
+ message: _response.error.errorMessage,
+ rawResponse: _response.rawResponse,
+ });
+ }
+ }
+
/**
* @param {Vapi.GetChatsRequest} request
* @param {ChatsClient.RequestOptions} requestOptions - Request-specific configuration.
diff --git a/src/api/resources/chats/client/requests/ChatControllerChatsExportRequest.ts b/src/api/resources/chats/client/requests/ChatControllerChatsExportRequest.ts
new file mode 100644
index 0000000..c34b0c9
--- /dev/null
+++ b/src/api/resources/chats/client/requests/ChatControllerChatsExportRequest.ts
@@ -0,0 +1,59 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../../../../index.js";
+
+/**
+ * @example
+ * {
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3"
+ * }
+ */
+export interface ChatControllerChatsExportRequest {
+ /** This is the unique identifier for the chat to filter by. */
+ id?: string;
+ /** This is the unique identifier for the assistant that will be used for the chat. */
+ assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
+ /** This is the unique identifier for the squad that will be used for the chat. */
+ squadId?: string;
+ /** This is the unique identifier for the session that will be used for the chat. */
+ sessionId?: string;
+ /** This is the unique identifier for the previous chat to filter by. */
+ previousChatId?: string;
+ /** Columns to include in the CSV export */
+ columns?: Vapi.ChatControllerChatsExportRequestColumns;
+ /**
+ * This is the email address to send the export to.
+ * Required if userId is not available in the request context.
+ */
+ email?: string;
+ /**
+ * This is the format of the export.
+ *
+ * @default csv
+ */
+ format?: Vapi.ChatControllerChatsExportRequestFormat;
+ /** This is the page number to return. Defaults to 1. */
+ page?: number;
+ /** This is the sort order for pagination. Defaults to 'DESC'. */
+ sortOrder?: Vapi.ChatControllerChatsExportRequestSortOrder;
+ /** This is the maximum number of items to return. Defaults to 100. */
+ limit?: number;
+ /** This will return items where the createdAt is greater than the specified value. */
+ createdAtGt?: string;
+ /** This will return items where the createdAt is less than the specified value. */
+ createdAtLt?: string;
+ /** This will return items where the createdAt is greater than or equal to the specified value. */
+ createdAtGe?: string;
+ /** This will return items where the createdAt is less than or equal to the specified value. */
+ createdAtLe?: string;
+ /** This will return items where the updatedAt is greater than the specified value. */
+ updatedAtGt?: string;
+ /** This will return items where the updatedAt is less than the specified value. */
+ updatedAtLt?: string;
+ /** This will return items where the updatedAt is greater than or equal to the specified value. */
+ updatedAtGe?: string;
+ /** This will return items where the updatedAt is less than or equal to the specified value. */
+ updatedAtLe?: string;
+}
diff --git a/src/api/resources/chats/client/requests/ListChatsRequest.ts b/src/api/resources/chats/client/requests/ListChatsRequest.ts
index cee3b9e..c896c65 100644
--- a/src/api/resources/chats/client/requests/ListChatsRequest.ts
+++ b/src/api/resources/chats/client/requests/ListChatsRequest.ts
@@ -4,11 +4,17 @@ import type * as Vapi from "../../../../index.js";
/**
* @example
- * {}
+ * {
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3"
+ * }
*/
export interface ListChatsRequest {
+ /** This is the unique identifier for the chat to filter by. */
+ id?: string;
/** This is the unique identifier for the assistant that will be used for the chat. */
assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
/** This is the unique identifier for the squad that will be used for the chat. */
squadId?: string;
/** This is the unique identifier for the session that will be used for the chat. */
diff --git a/src/api/resources/chats/client/requests/index.ts b/src/api/resources/chats/client/requests/index.ts
index 4448e47..56358df 100644
--- a/src/api/resources/chats/client/requests/index.ts
+++ b/src/api/resources/chats/client/requests/index.ts
@@ -1,3 +1,4 @@
+export type { ChatControllerChatsExportRequest } from "./ChatControllerChatsExportRequest.js";
export type { CreateChatDto } from "./CreateChatDto.js";
export type { DeleteChatsRequest } from "./DeleteChatsRequest.js";
export type { GetChatsRequest } from "./GetChatsRequest.js";
diff --git a/src/api/resources/chats/types/ChatControllerChatsExportRequestColumns.ts b/src/api/resources/chats/types/ChatControllerChatsExportRequestColumns.ts
new file mode 100644
index 0000000..4334e63
--- /dev/null
+++ b/src/api/resources/chats/types/ChatControllerChatsExportRequestColumns.ts
@@ -0,0 +1,16 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const ChatControllerChatsExportRequestColumns = {
+ Id: "id",
+ AssistantId: "assistantId",
+ SquadId: "squadId",
+ SessionId: "sessionId",
+ PreviousChatId: "previousChatId",
+ Cost: "cost",
+ Messages: "messages",
+ Output: "output",
+ CreatedAt: "createdAt",
+ UpdatedAt: "updatedAt",
+} as const;
+export type ChatControllerChatsExportRequestColumns =
+ (typeof ChatControllerChatsExportRequestColumns)[keyof typeof ChatControllerChatsExportRequestColumns];
diff --git a/src/api/resources/chats/types/ChatControllerChatsExportRequestFormat.ts b/src/api/resources/chats/types/ChatControllerChatsExportRequestFormat.ts
new file mode 100644
index 0000000..c6231c8
--- /dev/null
+++ b/src/api/resources/chats/types/ChatControllerChatsExportRequestFormat.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const ChatControllerChatsExportRequestFormat = {
+ Csv: "csv",
+ Json: "json",
+} as const;
+export type ChatControllerChatsExportRequestFormat =
+ (typeof ChatControllerChatsExportRequestFormat)[keyof typeof ChatControllerChatsExportRequestFormat];
diff --git a/src/api/resources/chats/types/ChatControllerChatsExportRequestSortOrder.ts b/src/api/resources/chats/types/ChatControllerChatsExportRequestSortOrder.ts
new file mode 100644
index 0000000..b5cb108
--- /dev/null
+++ b/src/api/resources/chats/types/ChatControllerChatsExportRequestSortOrder.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const ChatControllerChatsExportRequestSortOrder = {
+ Asc: "ASC",
+ Desc: "DESC",
+} as const;
+export type ChatControllerChatsExportRequestSortOrder =
+ (typeof ChatControllerChatsExportRequestSortOrder)[keyof typeof ChatControllerChatsExportRequestSortOrder];
diff --git a/src/api/resources/chats/types/index.ts b/src/api/resources/chats/types/index.ts
index 543ead7..4903aa0 100644
--- a/src/api/resources/chats/types/index.ts
+++ b/src/api/resources/chats/types/index.ts
@@ -1,3 +1,6 @@
+export * from "./ChatControllerChatsExportRequestColumns.js";
+export * from "./ChatControllerChatsExportRequestFormat.js";
+export * from "./ChatControllerChatsExportRequestSortOrder.js";
export * from "./CreateChatDtoInput.js";
export * from "./CreateChatDtoInputOneItem.js";
export * from "./CreateChatsResponse.js";
diff --git a/src/api/resources/sessions/client/Client.ts b/src/api/resources/sessions/client/Client.ts
index 92fb652..8ad783d 100644
--- a/src/api/resources/sessions/client/Client.ts
+++ b/src/api/resources/sessions/client/Client.ts
@@ -26,7 +26,10 @@ export class SessionsClient {
* @param {SessionsClient.RequestOptions} requestOptions - Request-specific configuration.
*
* @example
- * await client.sessions.list()
+ * await client.sessions.list({
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ * customerNumberAny: "+1234567890,+0987654321"
+ * })
*/
public list(
request: Vapi.ListSessionsRequest = {},
@@ -40,8 +43,10 @@ export class SessionsClient {
requestOptions?: SessionsClient.RequestOptions,
): Promise> {
const {
+ id,
name,
assistantId,
+ assistantIdAny,
squadId,
workflowId,
numberE164CheckEnabled,
@@ -51,6 +56,9 @@ export class SessionsClient {
sipUri,
email,
externalId,
+ customerNumberAny,
+ phoneNumberId,
+ phoneNumberIdAny,
page,
sortOrder,
limit,
@@ -64,6 +72,10 @@ export class SessionsClient {
updatedAtLe,
} = request;
const _queryParams: Record = {};
+ if (id != null) {
+ _queryParams.id = id;
+ }
+
if (name != null) {
_queryParams.name = name;
}
@@ -72,6 +84,10 @@ export class SessionsClient {
_queryParams.assistantId = assistantId;
}
+ if (assistantIdAny != null) {
+ _queryParams.assistantIdAny = assistantIdAny;
+ }
+
if (squadId != null) {
_queryParams.squadId = squadId;
}
@@ -108,6 +124,22 @@ export class SessionsClient {
_queryParams.externalId = externalId;
}
+ if (customerNumberAny != null) {
+ _queryParams.customerNumberAny = customerNumberAny;
+ }
+
+ if (phoneNumberId != null) {
+ _queryParams.phoneNumberId = phoneNumberId;
+ }
+
+ if (phoneNumberIdAny != null) {
+ if (Array.isArray(phoneNumberIdAny)) {
+ _queryParams.phoneNumberIdAny = phoneNumberIdAny.map((item) => item);
+ } else {
+ _queryParams.phoneNumberIdAny = phoneNumberIdAny;
+ }
+ }
+
if (page != null) {
_queryParams.page = page.toString();
}
@@ -273,6 +305,229 @@ export class SessionsClient {
}
}
+ /**
+ * @param {Vapi.SessionControllerSessionsExportRequest} request
+ * @param {SessionsClient.RequestOptions} requestOptions - Request-specific configuration.
+ *
+ * @example
+ * await client.sessions.sessionControllerSessionsExport({
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ * customerNumberAny: "+1234567890,+0987654321"
+ * })
+ */
+ public sessionControllerSessionsExport(
+ request: Vapi.SessionControllerSessionsExportRequest = {},
+ requestOptions?: SessionsClient.RequestOptions,
+ ): core.HttpResponsePromise {
+ return core.HttpResponsePromise.fromPromise(this.__sessionControllerSessionsExport(request, requestOptions));
+ }
+
+ private async __sessionControllerSessionsExport(
+ request: Vapi.SessionControllerSessionsExportRequest = {},
+ requestOptions?: SessionsClient.RequestOptions,
+ ): Promise> {
+ const {
+ id,
+ name,
+ assistantId,
+ assistantIdAny,
+ squadId,
+ workflowId,
+ numberE164CheckEnabled,
+ extension,
+ assistantOverrides,
+ number: number_,
+ sipUri,
+ email,
+ externalId,
+ customerNumberAny,
+ columns,
+ format,
+ phoneNumberId,
+ phoneNumberIdAny,
+ page,
+ sortOrder,
+ limit,
+ createdAtGt,
+ createdAtLt,
+ createdAtGe,
+ createdAtLe,
+ updatedAtGt,
+ updatedAtLt,
+ updatedAtGe,
+ updatedAtLe,
+ } = request;
+ const _queryParams: Record = {};
+ if (id != null) {
+ _queryParams.id = id;
+ }
+
+ if (name != null) {
+ _queryParams.name = name;
+ }
+
+ if (assistantId != null) {
+ _queryParams.assistantId = assistantId;
+ }
+
+ if (assistantIdAny != null) {
+ _queryParams.assistantIdAny = assistantIdAny;
+ }
+
+ if (squadId != null) {
+ _queryParams.squadId = squadId;
+ }
+
+ if (workflowId != null) {
+ _queryParams.workflowId = workflowId;
+ }
+
+ if (numberE164CheckEnabled != null) {
+ _queryParams.numberE164CheckEnabled = numberE164CheckEnabled.toString();
+ }
+
+ if (extension != null) {
+ _queryParams.extension = extension;
+ }
+
+ if (assistantOverrides != null) {
+ _queryParams.assistantOverrides = assistantOverrides;
+ }
+
+ if (number_ != null) {
+ _queryParams.number = number_;
+ }
+
+ if (sipUri != null) {
+ _queryParams.sipUri = sipUri;
+ }
+
+ if (email != null) {
+ _queryParams.email = email;
+ }
+
+ if (externalId != null) {
+ _queryParams.externalId = externalId;
+ }
+
+ if (customerNumberAny != null) {
+ _queryParams.customerNumberAny = customerNumberAny;
+ }
+
+ if (columns != null) {
+ _queryParams.columns = columns;
+ }
+
+ if (format != null) {
+ _queryParams.format = format;
+ }
+
+ if (phoneNumberId != null) {
+ _queryParams.phoneNumberId = phoneNumberId;
+ }
+
+ if (phoneNumberIdAny != null) {
+ if (Array.isArray(phoneNumberIdAny)) {
+ _queryParams.phoneNumberIdAny = phoneNumberIdAny.map((item) => item);
+ } else {
+ _queryParams.phoneNumberIdAny = phoneNumberIdAny;
+ }
+ }
+
+ if (page != null) {
+ _queryParams.page = page.toString();
+ }
+
+ if (sortOrder != null) {
+ _queryParams.sortOrder = sortOrder;
+ }
+
+ if (limit != null) {
+ _queryParams.limit = limit.toString();
+ }
+
+ if (createdAtGt != null) {
+ _queryParams.createdAtGt = createdAtGt;
+ }
+
+ if (createdAtLt != null) {
+ _queryParams.createdAtLt = createdAtLt;
+ }
+
+ if (createdAtGe != null) {
+ _queryParams.createdAtGe = createdAtGe;
+ }
+
+ if (createdAtLe != null) {
+ _queryParams.createdAtLe = createdAtLe;
+ }
+
+ if (updatedAtGt != null) {
+ _queryParams.updatedAtGt = updatedAtGt;
+ }
+
+ if (updatedAtLt != null) {
+ _queryParams.updatedAtLt = updatedAtLt;
+ }
+
+ if (updatedAtGe != null) {
+ _queryParams.updatedAtGe = updatedAtGe;
+ }
+
+ if (updatedAtLe != null) {
+ _queryParams.updatedAtLe = updatedAtLe;
+ }
+
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
+ this._options?.headers,
+ mergeOnlyDefinedHeaders({ Authorization: await this._getAuthorizationHeader() }),
+ requestOptions?.headers,
+ );
+ const _response = await (this._options.fetcher ?? core.fetcher)({
+ url: core.url.join(
+ (await core.Supplier.get(this._options.baseUrl)) ??
+ (await core.Supplier.get(this._options.environment)) ??
+ environments.VapiEnvironment.Default,
+ "session/export",
+ ),
+ method: "GET",
+ headers: _headers,
+ queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
+ abortSignal: requestOptions?.abortSignal,
+ fetchFn: this._options?.fetch,
+ logging: this._options.logging,
+ });
+ if (_response.ok) {
+ return { data: undefined, rawResponse: _response.rawResponse };
+ }
+
+ if (_response.error.reason === "status-code") {
+ throw new errors.VapiError({
+ statusCode: _response.error.statusCode,
+ body: _response.error.body,
+ rawResponse: _response.rawResponse,
+ });
+ }
+
+ switch (_response.error.reason) {
+ case "non-json":
+ throw new errors.VapiError({
+ statusCode: _response.error.statusCode,
+ body: _response.error.rawBody,
+ rawResponse: _response.rawResponse,
+ });
+ case "timeout":
+ throw new errors.VapiTimeoutError("Timeout exceeded when calling GET /session/export.");
+ case "unknown":
+ throw new errors.VapiError({
+ message: _response.error.errorMessage,
+ rawResponse: _response.rawResponse,
+ });
+ }
+ }
+
/**
* @param {Vapi.GetSessionsRequest} request
* @param {SessionsClient.RequestOptions} requestOptions - Request-specific configuration.
diff --git a/src/api/resources/sessions/client/requests/ListSessionsRequest.ts b/src/api/resources/sessions/client/requests/ListSessionsRequest.ts
index cdaabf1..ce87294 100644
--- a/src/api/resources/sessions/client/requests/ListSessionsRequest.ts
+++ b/src/api/resources/sessions/client/requests/ListSessionsRequest.ts
@@ -4,9 +4,14 @@ import type * as Vapi from "../../../../index.js";
/**
* @example
- * {}
+ * {
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ * customerNumberAny: "+1234567890,+0987654321"
+ * }
*/
export interface ListSessionsRequest {
+ /** This is the unique identifier for the session to filter by. */
+ id?: string;
/**
* This is the name of the customer. This is just for your own reference.
*
@@ -15,6 +20,8 @@ export interface ListSessionsRequest {
name?: string;
/** This is the ID of the assistant to filter sessions by. */
assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
/** This is the ID of the squad to filter sessions by. */
squadId?: string;
/** This is the ID of the workflow to filter sessions by. */
@@ -46,6 +53,12 @@ export interface ListSessionsRequest {
email?: string;
/** This is the external ID of the customer. */
externalId?: string;
+ /** Filter by any of the specified customer phone numbers (comma-separated). */
+ customerNumberAny?: string;
+ /** This will return sessions with the specified phoneNumberId. */
+ phoneNumberId?: string;
+ /** This will return sessions with any of the specified phoneNumberIds. */
+ phoneNumberIdAny?: string | string[];
/** This is the page number to return. Defaults to 1. */
page?: number;
/** This is the sort order for pagination. Defaults to 'DESC'. */
diff --git a/src/api/resources/sessions/client/requests/SessionControllerSessionsExportRequest.ts b/src/api/resources/sessions/client/requests/SessionControllerSessionsExportRequest.ts
new file mode 100644
index 0000000..9205cbf
--- /dev/null
+++ b/src/api/resources/sessions/client/requests/SessionControllerSessionsExportRequest.ts
@@ -0,0 +1,95 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../../../../index.js";
+
+/**
+ * @example
+ * {
+ * assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ * customerNumberAny: "+1234567890,+0987654321"
+ * }
+ */
+export interface SessionControllerSessionsExportRequest {
+ /** This is the unique identifier for the session to filter by. */
+ id?: string;
+ /**
+ * This is the name of the customer. This is just for your own reference.
+ *
+ * For SIP inbound calls, this is extracted from the `From` SIP header with format `"Display Name" `.
+ */
+ name?: string;
+ /** This is the ID of the assistant to filter sessions by. */
+ assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
+ /** This is the ID of the squad to filter sessions by. */
+ squadId?: string;
+ /** This is the ID of the workflow to filter sessions by. */
+ workflowId?: string;
+ /**
+ * 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.
+ *
+ * Use cases:
+ * - `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.
+ * - `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.
+ *
+ * If `false`, the `number` is still required to only contain alphanumeric characters (regex: `/^\+?[a-zA-Z0-9]+$/`).
+ *
+ * @default true (E164 check is enabled)
+ */
+ numberE164CheckEnabled?: boolean;
+ /** This is the extension that will be dialed after the call is answered. */
+ extension?: string;
+ /**
+ * These are the overrides for the assistant's settings and template variables specific to this customer.
+ * This allows customization of the assistant's behavior for individual customers in batch calls.
+ */
+ assistantOverrides?: string;
+ /** This is the number of the customer. */
+ number?: string;
+ /** This is the SIP URI of the customer. */
+ sipUri?: string;
+ /**
+ * This is the email address to send the export to.
+ * Required if userId is not available in the request context.
+ */
+ email?: string;
+ /** This is the external ID of the customer. */
+ externalId?: string;
+ /** Filter by any of the specified customer phone numbers (comma-separated). */
+ customerNumberAny?: string;
+ /** Columns to include in the CSV export */
+ columns?: Vapi.SessionControllerSessionsExportRequestColumns;
+ /**
+ * This is the format of the export.
+ *
+ * @default csv
+ */
+ format?: Vapi.SessionControllerSessionsExportRequestFormat;
+ /** This will return sessions with the specified phoneNumberId. */
+ phoneNumberId?: string;
+ /** This will return sessions with any of the specified phoneNumberIds. */
+ phoneNumberIdAny?: string | string[];
+ /** This is the page number to return. Defaults to 1. */
+ page?: number;
+ /** This is the sort order for pagination. Defaults to 'DESC'. */
+ sortOrder?: Vapi.SessionControllerSessionsExportRequestSortOrder;
+ /** This is the maximum number of items to return. Defaults to 100. */
+ limit?: number;
+ /** This will return items where the createdAt is greater than the specified value. */
+ createdAtGt?: string;
+ /** This will return items where the createdAt is less than the specified value. */
+ createdAtLt?: string;
+ /** This will return items where the createdAt is greater than or equal to the specified value. */
+ createdAtGe?: string;
+ /** This will return items where the createdAt is less than or equal to the specified value. */
+ createdAtLe?: string;
+ /** This will return items where the updatedAt is greater than the specified value. */
+ updatedAtGt?: string;
+ /** This will return items where the updatedAt is less than the specified value. */
+ updatedAtLt?: string;
+ /** This will return items where the updatedAt is greater than or equal to the specified value. */
+ updatedAtGe?: string;
+ /** This will return items where the updatedAt is less than or equal to the specified value. */
+ updatedAtLe?: string;
+}
diff --git a/src/api/resources/sessions/client/requests/index.ts b/src/api/resources/sessions/client/requests/index.ts
index e614144..00bbebc 100644
--- a/src/api/resources/sessions/client/requests/index.ts
+++ b/src/api/resources/sessions/client/requests/index.ts
@@ -2,4 +2,5 @@ export type { CreateSessionDto } from "./CreateSessionDto.js";
export type { DeleteSessionsRequest } from "./DeleteSessionsRequest.js";
export type { GetSessionsRequest } from "./GetSessionsRequest.js";
export type { ListSessionsRequest } from "./ListSessionsRequest.js";
+export type { SessionControllerSessionsExportRequest } from "./SessionControllerSessionsExportRequest.js";
export type { UpdateSessionDto } from "./UpdateSessionDto.js";
diff --git a/src/api/resources/sessions/types/SessionControllerSessionsExportRequestColumns.ts b/src/api/resources/sessions/types/SessionControllerSessionsExportRequestColumns.ts
new file mode 100644
index 0000000..99319c8
--- /dev/null
+++ b/src/api/resources/sessions/types/SessionControllerSessionsExportRequestColumns.ts
@@ -0,0 +1,18 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const SessionControllerSessionsExportRequestColumns = {
+ Id: "id",
+ Name: "name",
+ Status: "status",
+ AssistantId: "assistantId",
+ SquadId: "squadId",
+ CustomerName: "customerName",
+ CustomerNumber: "customerNumber",
+ PhoneNumberId: "phoneNumberId",
+ Cost: "cost",
+ Messages: "messages",
+ CreatedAt: "createdAt",
+ UpdatedAt: "updatedAt",
+} as const;
+export type SessionControllerSessionsExportRequestColumns =
+ (typeof SessionControllerSessionsExportRequestColumns)[keyof typeof SessionControllerSessionsExportRequestColumns];
diff --git a/src/api/resources/sessions/types/SessionControllerSessionsExportRequestFormat.ts b/src/api/resources/sessions/types/SessionControllerSessionsExportRequestFormat.ts
new file mode 100644
index 0000000..f15193a
--- /dev/null
+++ b/src/api/resources/sessions/types/SessionControllerSessionsExportRequestFormat.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const SessionControllerSessionsExportRequestFormat = {
+ Csv: "csv",
+ Json: "json",
+} as const;
+export type SessionControllerSessionsExportRequestFormat =
+ (typeof SessionControllerSessionsExportRequestFormat)[keyof typeof SessionControllerSessionsExportRequestFormat];
diff --git a/src/api/resources/sessions/types/SessionControllerSessionsExportRequestSortOrder.ts b/src/api/resources/sessions/types/SessionControllerSessionsExportRequestSortOrder.ts
new file mode 100644
index 0000000..734346d
--- /dev/null
+++ b/src/api/resources/sessions/types/SessionControllerSessionsExportRequestSortOrder.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const SessionControllerSessionsExportRequestSortOrder = {
+ Asc: "ASC",
+ Desc: "DESC",
+} as const;
+export type SessionControllerSessionsExportRequestSortOrder =
+ (typeof SessionControllerSessionsExportRequestSortOrder)[keyof typeof SessionControllerSessionsExportRequestSortOrder];
diff --git a/src/api/resources/sessions/types/index.ts b/src/api/resources/sessions/types/index.ts
index 15e1abf..4349736 100644
--- a/src/api/resources/sessions/types/index.ts
+++ b/src/api/resources/sessions/types/index.ts
@@ -1,5 +1,8 @@
export * from "./CreateSessionDtoMessagesItem.js";
export * from "./CreateSessionDtoStatus.js";
export * from "./ListSessionsRequestSortOrder.js";
+export * from "./SessionControllerSessionsExportRequestColumns.js";
+export * from "./SessionControllerSessionsExportRequestFormat.js";
+export * from "./SessionControllerSessionsExportRequestSortOrder.js";
export * from "./UpdateSessionDtoMessagesItem.js";
export * from "./UpdateSessionDtoStatus.js";
diff --git a/src/api/resources/structuredOutputs/client/Client.ts b/src/api/resources/structuredOutputs/client/Client.ts
index 668a232..9e5fe98 100644
--- a/src/api/resources/structuredOutputs/client/Client.ts
+++ b/src/api/resources/structuredOutputs/client/Client.ts
@@ -528,81 +528,6 @@ export class StructuredOutputsClient {
}
}
- /**
- * Analyzes assistant configuration and generates contextual structured output recommendations
- *
- * @param {Vapi.GenerateStructuredOutputSuggestionsDto} request
- * @param {StructuredOutputsClient.RequestOptions} requestOptions - Request-specific configuration.
- *
- * @example
- * await client.structuredOutputs.structuredOutputControllerSuggest({
- * assistantId: "550e8400-e29b-41d4-a716-446655440000"
- * })
- */
- public structuredOutputControllerSuggest(
- request: Vapi.GenerateStructuredOutputSuggestionsDto,
- requestOptions?: StructuredOutputsClient.RequestOptions,
- ): core.HttpResponsePromise[]> {
- return core.HttpResponsePromise.fromPromise(this.__structuredOutputControllerSuggest(request, requestOptions));
- }
-
- private async __structuredOutputControllerSuggest(
- request: Vapi.GenerateStructuredOutputSuggestionsDto,
- requestOptions?: StructuredOutputsClient.RequestOptions,
- ): Promise[]>> {
- const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
- this._options?.headers,
- mergeOnlyDefinedHeaders({ Authorization: await this._getAuthorizationHeader() }),
- requestOptions?.headers,
- );
- const _response = await (this._options.fetcher ?? core.fetcher)({
- url: core.url.join(
- (await core.Supplier.get(this._options.baseUrl)) ??
- (await core.Supplier.get(this._options.environment)) ??
- environments.VapiEnvironment.Default,
- "structured-output/suggest",
- ),
- method: "POST",
- headers: _headers,
- contentType: "application/json",
- queryParameters: requestOptions?.queryParams,
- requestType: "json",
- body: request,
- timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
- maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
- abortSignal: requestOptions?.abortSignal,
- fetchFn: this._options?.fetch,
- logging: this._options.logging,
- });
- if (_response.ok) {
- return { data: _response.body as Record[], rawResponse: _response.rawResponse };
- }
-
- if (_response.error.reason === "status-code") {
- throw new errors.VapiError({
- statusCode: _response.error.statusCode,
- body: _response.error.body,
- rawResponse: _response.rawResponse,
- });
- }
-
- switch (_response.error.reason) {
- case "non-json":
- throw new errors.VapiError({
- statusCode: _response.error.statusCode,
- body: _response.error.rawBody,
- rawResponse: _response.rawResponse,
- });
- case "timeout":
- throw new errors.VapiTimeoutError("Timeout exceeded when calling POST /structured-output/suggest.");
- case "unknown":
- throw new errors.VapiError({
- message: _response.error.errorMessage,
- rawResponse: _response.rawResponse,
- });
- }
- }
-
protected async _getAuthorizationHeader(): Promise {
return `Bearer ${await core.Supplier.get(this._options.token)}`;
}
diff --git a/src/api/resources/structuredOutputs/client/requests/GenerateStructuredOutputSuggestionsDto.ts b/src/api/resources/structuredOutputs/client/requests/GenerateStructuredOutputSuggestionsDto.ts
deleted file mode 100644
index a269369..0000000
--- a/src/api/resources/structuredOutputs/client/requests/GenerateStructuredOutputSuggestionsDto.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file was auto-generated by Fern from our API Definition.
-
-/**
- * @example
- * {
- * assistantId: "550e8400-e29b-41d4-a716-446655440000"
- * }
- */
-export interface GenerateStructuredOutputSuggestionsDto {
- /** The assistant ID to analyze and generate suggestions for */
- assistantId: string;
- /** Number of suggestions to generate */
- count?: number;
- /** Existing structured output IDs to exclude from suggestions */
- excludeIds?: string[];
- /** Iteration/seed for generating diverse suggestions (0 = first generation, 1+ = regenerations with increasing specificity) */
- seed?: number;
-}
diff --git a/src/api/resources/structuredOutputs/client/requests/index.ts b/src/api/resources/structuredOutputs/client/requests/index.ts
index 6646963..8742ea4 100644
--- a/src/api/resources/structuredOutputs/client/requests/index.ts
+++ b/src/api/resources/structuredOutputs/client/requests/index.ts
@@ -1,4 +1,3 @@
-export type { GenerateStructuredOutputSuggestionsDto } from "./GenerateStructuredOutputSuggestionsDto.js";
export type { StructuredOutputControllerFindAllRequest } from "./StructuredOutputControllerFindAllRequest.js";
export type { StructuredOutputControllerFindOneRequest } from "./StructuredOutputControllerFindOneRequest.js";
export type { StructuredOutputControllerRemoveRequest } from "./StructuredOutputControllerRemoveRequest.js";
diff --git a/src/api/resources/tools/client/Client.ts b/src/api/resources/tools/client/Client.ts
index 4b86bba..0358256 100644
--- a/src/api/resources/tools/client/Client.ts
+++ b/src/api/resources/tools/client/Client.ts
@@ -429,6 +429,74 @@ export class ToolsClient {
}
}
+ /**
+ * @param {ToolsClient.RequestOptions} requestOptions - Request-specific configuration.
+ *
+ * @example
+ * await client.tools.toolControllerTestCodeExecution()
+ */
+ public toolControllerTestCodeExecution(
+ requestOptions?: ToolsClient.RequestOptions,
+ ): core.HttpResponsePromise {
+ return core.HttpResponsePromise.fromPromise(this.__toolControllerTestCodeExecution(requestOptions));
+ }
+
+ private async __toolControllerTestCodeExecution(
+ requestOptions?: ToolsClient.RequestOptions,
+ ): Promise> {
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
+ this._options?.headers,
+ mergeOnlyDefinedHeaders({ Authorization: await this._getAuthorizationHeader() }),
+ requestOptions?.headers,
+ );
+ const _response = await (this._options.fetcher ?? core.fetcher)({
+ url: core.url.join(
+ (await core.Supplier.get(this._options.baseUrl)) ??
+ (await core.Supplier.get(this._options.environment)) ??
+ environments.VapiEnvironment.Default,
+ "tool/code/test",
+ ),
+ method: "POST",
+ headers: _headers,
+ queryParameters: requestOptions?.queryParams,
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
+ abortSignal: requestOptions?.abortSignal,
+ fetchFn: this._options?.fetch,
+ logging: this._options.logging,
+ });
+ if (_response.ok) {
+ return {
+ data: _response.body as Vapi.ToolControllerTestCodeExecutionResponse,
+ rawResponse: _response.rawResponse,
+ };
+ }
+
+ if (_response.error.reason === "status-code") {
+ throw new errors.VapiError({
+ statusCode: _response.error.statusCode,
+ body: _response.error.body,
+ rawResponse: _response.rawResponse,
+ });
+ }
+
+ switch (_response.error.reason) {
+ case "non-json":
+ throw new errors.VapiError({
+ statusCode: _response.error.statusCode,
+ body: _response.error.rawBody,
+ rawResponse: _response.rawResponse,
+ });
+ case "timeout":
+ throw new errors.VapiTimeoutError("Timeout exceeded when calling POST /tool/code/test.");
+ case "unknown":
+ throw new errors.VapiError({
+ message: _response.error.errorMessage,
+ rawResponse: _response.rawResponse,
+ });
+ }
+ }
+
protected async _getAuthorizationHeader(): Promise {
return `Bearer ${await core.Supplier.get(this._options.token)}`;
}
diff --git a/src/api/resources/tools/types/CreateToolsResponse.ts b/src/api/resources/tools/types/CreateToolsResponse.ts
index 34a60fc..dc5be1c 100644
--- a/src/api/resources/tools/types/CreateToolsResponse.ts
+++ b/src/api/resources/tools/types/CreateToolsResponse.ts
@@ -4,6 +4,7 @@ import type * as Vapi from "../../../index.js";
export type CreateToolsResponse =
| Vapi.ApiRequestTool
+ | Vapi.CodeTool
| Vapi.DtmfTool
| Vapi.EndCallTool
| Vapi.FunctionTool
diff --git a/src/api/resources/tools/types/DeleteToolsResponse.ts b/src/api/resources/tools/types/DeleteToolsResponse.ts
index 24ce206..a9b3736 100644
--- a/src/api/resources/tools/types/DeleteToolsResponse.ts
+++ b/src/api/resources/tools/types/DeleteToolsResponse.ts
@@ -4,6 +4,7 @@ import type * as Vapi from "../../../index.js";
export type DeleteToolsResponse =
| Vapi.ApiRequestTool
+ | Vapi.CodeTool
| Vapi.DtmfTool
| Vapi.EndCallTool
| Vapi.FunctionTool
diff --git a/src/api/resources/tools/types/GetToolsResponse.ts b/src/api/resources/tools/types/GetToolsResponse.ts
index 471eadd..d5098b2 100644
--- a/src/api/resources/tools/types/GetToolsResponse.ts
+++ b/src/api/resources/tools/types/GetToolsResponse.ts
@@ -4,6 +4,7 @@ import type * as Vapi from "../../../index.js";
export type GetToolsResponse =
| Vapi.ApiRequestTool
+ | Vapi.CodeTool
| Vapi.DtmfTool
| Vapi.EndCallTool
| Vapi.FunctionTool
diff --git a/src/api/resources/tools/types/ListToolsResponseItem.ts b/src/api/resources/tools/types/ListToolsResponseItem.ts
index 7d93954..91f56c2 100644
--- a/src/api/resources/tools/types/ListToolsResponseItem.ts
+++ b/src/api/resources/tools/types/ListToolsResponseItem.ts
@@ -4,6 +4,7 @@ import type * as Vapi from "../../../index.js";
export type ListToolsResponseItem =
| Vapi.ApiRequestTool
+ | Vapi.CodeTool
| Vapi.DtmfTool
| Vapi.EndCallTool
| Vapi.FunctionTool
diff --git a/src/api/resources/tools/types/ToolControllerTestCodeExecutionResponse.ts b/src/api/resources/tools/types/ToolControllerTestCodeExecutionResponse.ts
new file mode 100644
index 0000000..dd48cd1
--- /dev/null
+++ b/src/api/resources/tools/types/ToolControllerTestCodeExecutionResponse.ts
@@ -0,0 +1,9 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export interface ToolControllerTestCodeExecutionResponse {
+ success?: boolean;
+ result?: Record;
+ error?: string;
+ logs?: string;
+ executionTimeMs?: number;
+}
diff --git a/src/api/resources/tools/types/UpdateToolsResponse.ts b/src/api/resources/tools/types/UpdateToolsResponse.ts
index f0b4957..c989f5d 100644
--- a/src/api/resources/tools/types/UpdateToolsResponse.ts
+++ b/src/api/resources/tools/types/UpdateToolsResponse.ts
@@ -4,6 +4,7 @@ import type * as Vapi from "../../../index.js";
export type UpdateToolsResponse =
| Vapi.ApiRequestTool
+ | Vapi.CodeTool
| Vapi.DtmfTool
| Vapi.EndCallTool
| Vapi.FunctionTool
diff --git a/src/api/resources/tools/types/index.ts b/src/api/resources/tools/types/index.ts
index d2417d8..b2df635 100644
--- a/src/api/resources/tools/types/index.ts
+++ b/src/api/resources/tools/types/index.ts
@@ -3,5 +3,6 @@ export * from "./CreateToolsResponse.js";
export * from "./DeleteToolsResponse.js";
export * from "./GetToolsResponse.js";
export * from "./ListToolsResponseItem.js";
+export * from "./ToolControllerTestCodeExecutionResponse.js";
export * from "./UpdateToolsRequestBody.js";
export * from "./UpdateToolsResponse.js";
diff --git a/src/api/types/AnalysisCost.ts b/src/api/types/AnalysisCost.ts
index 821ac3f..d3ca3c2 100644
--- a/src/api/types/AnalysisCost.ts
+++ b/src/api/types/AnalysisCost.ts
@@ -13,6 +13,8 @@ export interface AnalysisCost {
promptTokens: number;
/** This is the number of completion tokens generated in the analysis. */
completionTokens: number;
+ /** This is the number of cached prompt tokens used in the analysis. This is only applicable to certain providers (e.g., OpenAI, Azure OpenAI) that support prompt caching. Cached tokens are billed at a discounted rate. */
+ cachedPromptTokens?: number;
/** This is the cost of the component in USD. */
cost: number;
}
diff --git a/src/api/types/AnalysisCostBreakdown.ts b/src/api/types/AnalysisCostBreakdown.ts
index 7f3e71c..b1230be 100644
--- a/src/api/types/AnalysisCostBreakdown.ts
+++ b/src/api/types/AnalysisCostBreakdown.ts
@@ -7,22 +7,30 @@ export interface AnalysisCostBreakdown {
summaryPromptTokens?: number;
/** This is the number of completion tokens used to summarize the call. */
summaryCompletionTokens?: number;
+ /** This is the number of cached prompt tokens used to summarize the call. */
+ summaryCachedPromptTokens?: number;
/** This is the cost to extract structured data from the call. */
structuredData?: number;
/** This is the number of prompt tokens used to extract structured data from the call. */
structuredDataPromptTokens?: number;
/** This is the number of completion tokens used to extract structured data from the call. */
structuredDataCompletionTokens?: number;
+ /** This is the number of cached prompt tokens used to extract structured data from the call. */
+ structuredDataCachedPromptTokens?: number;
/** This is the cost to evaluate if the call was successful. */
successEvaluation?: number;
/** This is the number of prompt tokens used to evaluate if the call was successful. */
successEvaluationPromptTokens?: number;
/** This is the number of completion tokens used to evaluate if the call was successful. */
successEvaluationCompletionTokens?: number;
+ /** This is the number of cached prompt tokens used to evaluate if the call was successful. */
+ successEvaluationCachedPromptTokens?: number;
/** This is the cost to evaluate structuredOutputs from the call. */
structuredOutput?: number;
/** This is the number of prompt tokens used to evaluate structuredOutputs from the call. */
structuredOutputPromptTokens?: number;
/** This is the number of completion tokens used to evaluate structuredOutputs from the call. */
structuredOutputCompletionTokens?: number;
+ /** This is the number of cached prompt tokens used to evaluate structuredOutputs from the call. */
+ structuredOutputCachedPromptTokens?: number;
}
diff --git a/src/api/types/AnthropicModelModel.ts b/src/api/types/AnthropicModelModel.ts
index b76e812..e4d48c0 100644
--- a/src/api/types/AnthropicModelModel.ts
+++ b/src/api/types/AnthropicModelModel.ts
@@ -10,6 +10,7 @@ export const AnthropicModelModel = {
Claude35Haiku20241022: "claude-3-5-haiku-20241022",
Claude37Sonnet20250219: "claude-3-7-sonnet-20250219",
ClaudeOpus420250514: "claude-opus-4-20250514",
+ ClaudeOpus4520251101: "claude-opus-4-5-20251101",
ClaudeSonnet420250514: "claude-sonnet-4-20250514",
ClaudeSonnet4520250929: "claude-sonnet-4-5-20250929",
ClaudeHaiku4520251001: "claude-haiku-4-5-20251001",
diff --git a/src/api/types/AnthropicModelToolsItem.ts b/src/api/types/AnthropicModelToolsItem.ts
index eb55223..b393009 100644
--- a/src/api/types/AnthropicModelToolsItem.ts
+++ b/src/api/types/AnthropicModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type AnthropicModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/AnyscaleModelToolsItem.ts b/src/api/types/AnyscaleModelToolsItem.ts
index beafa2f..655ff84 100644
--- a/src/api/types/AnyscaleModelToolsItem.ts
+++ b/src/api/types/AnyscaleModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type AnyscaleModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/ApiRequestTool.ts b/src/api/types/ApiRequestTool.ts
index 48afa10..2db3368 100644
--- a/src/api/types/ApiRequestTool.ts
+++ b/src/api/types/ApiRequestTool.ts
@@ -19,6 +19,8 @@ export interface ApiRequestTool {
timeoutSeconds?: number;
/** The credential ID for API request authentication */
credentialId?: string;
+ /** This is the paths to encrypt in the request body if credentialId and encryptionPlan are defined. */
+ encryptedPaths?: string[];
/** This is the unique identifier for the tool. */
id: string;
/** This is the unique identifier for the organization that this tool belongs to. */
diff --git a/src/api/types/AssemblyAiTranscriber.ts b/src/api/types/AssemblyAiTranscriber.ts
index e91cc2a..bfb83d1 100644
--- a/src/api/types/AssemblyAiTranscriber.ts
+++ b/src/api/types/AssemblyAiTranscriber.ts
@@ -40,6 +40,21 @@ export interface AssemblyAiTranscriber {
* @default 400
*/
maxTurnSilence?: number;
+ /**
+ * Use VAD to assist with endpointing decisions from the transcriber.
+ * When enabled, transcriber endpointing will be buffered if VAD detects the user is still speaking, preventing premature turn-taking.
+ * When disabled, transcriber endpointing will be used immediately regardless of VAD state, allowing for quicker but more aggressive turn-taking.
+ * Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
+ *
+ * @default true
+ */
+ vadAssistedEndpointingEnabled?: boolean;
+ /**
+ * This is the speech model used for the streaming session.
+ * Note: Keyterms prompting is not supported with multilingual streaming.
+ * @default 'universal-streaming-english'
+ */
+ speechModel?: Vapi.AssemblyAiTranscriberSpeechModel;
/** The WebSocket URL that the transcriber connects to. */
realtimeUrl?: string;
/** Add up to 2500 characters of custom vocabulary. */
diff --git a/src/api/types/AssemblyAiTranscriberLanguage.ts b/src/api/types/AssemblyAiTranscriberLanguage.ts
index f7164bf..3855ed0 100644
--- a/src/api/types/AssemblyAiTranscriberLanguage.ts
+++ b/src/api/types/AssemblyAiTranscriberLanguage.ts
@@ -2,6 +2,7 @@
/** This is the language that will be set for the transcription. */
export const AssemblyAiTranscriberLanguage = {
+ Multi: "multi",
En: "en",
} as const;
export type AssemblyAiTranscriberLanguage =
diff --git a/src/api/types/AssemblyAiTranscriberSpeechModel.ts b/src/api/types/AssemblyAiTranscriberSpeechModel.ts
new file mode 100644
index 0000000..f91e289
--- /dev/null
+++ b/src/api/types/AssemblyAiTranscriberSpeechModel.ts
@@ -0,0 +1,13 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/**
+ * This is the speech model used for the streaming session.
+ * Note: Keyterms prompting is not supported with multilingual streaming.
+ * @default 'universal-streaming-english'
+ */
+export const AssemblyAiTranscriberSpeechModel = {
+ UniversalStreamingEnglish: "universal-streaming-english",
+ UniversalStreamingMultilingual: "universal-streaming-multilingual",
+} as const;
+export type AssemblyAiTranscriberSpeechModel =
+ (typeof AssemblyAiTranscriberSpeechModel)[keyof typeof AssemblyAiTranscriberSpeechModel];
diff --git a/src/api/types/AssistantCredentialsItem.ts b/src/api/types/AssistantCredentialsItem.ts
index 5ab26c0..5daff31 100644
--- a/src/api/types/AssistantCredentialsItem.ts
+++ b/src/api/types/AssistantCredentialsItem.ts
@@ -53,4 +53,5 @@ export type AssistantCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/AssistantMessageJudgePlanAi.ts b/src/api/types/AssistantMessageJudgePlanAi.ts
index 4e31119..bd94a8d 100644
--- a/src/api/types/AssistantMessageJudgePlanAi.ts
+++ b/src/api/types/AssistantMessageJudgePlanAi.ts
@@ -20,4 +20,10 @@ export interface AssistantMessageJudgePlanAi {
* @default 'ai'
*/
type: Vapi.AssistantMessageJudgePlanAiType;
+ /**
+ * This is the flag to enable automatically adding the liquid variable {{messages}} to the model's messages array
+ * This is only applicable if the user has not provided any messages in the model's messages array
+ * @default true
+ */
+ autoIncludeMessageHistory?: boolean;
}
diff --git a/src/api/types/AssistantOverridesCredentialsItem.ts b/src/api/types/AssistantOverridesCredentialsItem.ts
index 5738701..ae324a6 100644
--- a/src/api/types/AssistantOverridesCredentialsItem.ts
+++ b/src/api/types/AssistantOverridesCredentialsItem.ts
@@ -53,4 +53,5 @@ export type AssistantOverridesCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/AssistantOverridesToolsAppendItem.ts b/src/api/types/AssistantOverridesToolsAppendItem.ts
index 459977b..8a73644 100644
--- a/src/api/types/AssistantOverridesToolsAppendItem.ts
+++ b/src/api/types/AssistantOverridesToolsAppendItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type AssistantOverridesToolsAppendItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/AssistantOverridesVoice.ts b/src/api/types/AssistantOverridesVoice.ts
index b8ef07a..7c06068 100644
--- a/src/api/types/AssistantOverridesVoice.ts
+++ b/src/api/types/AssistantOverridesVoice.ts
@@ -16,6 +16,7 @@ export type AssistantOverridesVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/AssistantVoice.ts b/src/api/types/AssistantVoice.ts
index 84f1c03..3ebcad6 100644
--- a/src/api/types/AssistantVoice.ts
+++ b/src/api/types/AssistantVoice.ts
@@ -16,6 +16,7 @@ export type AssistantVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/AzureCredentialRegion.ts b/src/api/types/AzureCredentialRegion.ts
index 24c8afe..4160051 100644
--- a/src/api/types/AzureCredentialRegion.ts
+++ b/src/api/types/AzureCredentialRegion.ts
@@ -8,16 +8,20 @@ export const AzureCredentialRegion = {
Eastus2: "eastus2",
Eastus: "eastus",
France: "france",
+ Germanywestcentral: "germanywestcentral",
India: "india",
Japaneast: "japaneast",
Japanwest: "japanwest",
- Uaenorth: "uaenorth",
Northcentralus: "northcentralus",
Norway: "norway",
+ Polandcentral: "polandcentral",
Southcentralus: "southcentralus",
+ Spaincentral: "spaincentral",
Swedencentral: "swedencentral",
Switzerland: "switzerland",
+ Uaenorth: "uaenorth",
Uk: "uk",
+ Westeurope: "westeurope",
Westus: "westus",
Westus3: "westus3",
} as const;
diff --git a/src/api/types/AzureOpenAiCredentialModelsItem.ts b/src/api/types/AzureOpenAiCredentialModelsItem.ts
index b57cb75..596d560 100644
--- a/src/api/types/AzureOpenAiCredentialModelsItem.ts
+++ b/src/api/types/AzureOpenAiCredentialModelsItem.ts
@@ -1,6 +1,10 @@
// This file was auto-generated by Fern from our API Definition.
export const AzureOpenAiCredentialModelsItem = {
+ Gpt52: "gpt-5.2",
+ Gpt52Chat: "gpt-5.2-chat",
+ Gpt51: "gpt-5.1",
+ Gpt51Chat: "gpt-5.1-chat",
Gpt5: "gpt-5",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
diff --git a/src/api/types/AzureOpenAiCredentialRegion.ts b/src/api/types/AzureOpenAiCredentialRegion.ts
index 374504d..6c812f6 100644
--- a/src/api/types/AzureOpenAiCredentialRegion.ts
+++ b/src/api/types/AzureOpenAiCredentialRegion.ts
@@ -7,16 +7,20 @@ export const AzureOpenAiCredentialRegion = {
Eastus2: "eastus2",
Eastus: "eastus",
France: "france",
+ Germanywestcentral: "germanywestcentral",
India: "india",
Japaneast: "japaneast",
Japanwest: "japanwest",
- Uaenorth: "uaenorth",
Northcentralus: "northcentralus",
Norway: "norway",
+ Polandcentral: "polandcentral",
Southcentralus: "southcentralus",
+ Spaincentral: "spaincentral",
Swedencentral: "swedencentral",
Switzerland: "switzerland",
+ Uaenorth: "uaenorth",
Uk: "uk",
+ Westeurope: "westeurope",
Westus: "westus",
Westus3: "westus3",
} as const;
diff --git a/src/api/types/BotMessage.ts b/src/api/types/BotMessage.ts
index 3f233ad..0bd1bbf 100644
--- a/src/api/types/BotMessage.ts
+++ b/src/api/types/BotMessage.ts
@@ -15,6 +15,4 @@ export interface BotMessage {
source?: string;
/** The duration of the message in seconds. */
duration?: number;
- /** Stable speaker label for diarized user speakers (e.g., "Speaker 1"). */
- speakerLabel?: string;
}
diff --git a/src/api/types/Call.ts b/src/api/types/Call.ts
index 9a9cb82..0f4ccef 100644
--- a/src/api/types/Call.ts
+++ b/src/api/types/Call.ts
@@ -24,6 +24,8 @@ export interface Call {
status?: Vapi.CallStatus;
/** This is the explanation for how the call ended. */
endedReason?: Vapi.CallEndedReason;
+ /** This is the message that adds more context to the ended reason. It can be used to provide potential error messages or warnings. */
+ endedMessage?: string;
/** This is the destination where the call ended up being transferred to. If the call was not transferred, this will be empty. */
destination?: Vapi.CallDestination;
/** This is the unique identifier for the call. */
diff --git a/src/api/types/CallEndedReason.ts b/src/api/types/CallEndedReason.ts
index 12c4638..20fb157 100644
--- a/src/api/types/CallEndedReason.ts
+++ b/src/api/types/CallEndedReason.ts
@@ -45,6 +45,7 @@ export const CallEndedReason = {
PipelineErrorSesameVoiceFailed: "pipeline-error-sesame-voice-failed",
PipelineErrorInworldVoiceFailed: "pipeline-error-inworld-voice-failed",
PipelineErrorMinimaxVoiceFailed: "pipeline-error-minimax-voice-failed",
+ PipelineErrorWellsaidVoiceFailed: "pipeline-error-wellsaid-voice-failed",
PipelineErrorTavusVideoFailed: "pipeline-error-tavus-video-failed",
CallInProgressErrorVapifaultOpenaiVoiceFailed: "call.in-progress.error-vapifault-openai-voice-failed",
CallInProgressErrorVapifaultCartesiaVoiceFailed: "call.in-progress.error-vapifault-cartesia-voice-failed",
@@ -61,6 +62,7 @@ export const CallEndedReason = {
CallInProgressErrorVapifaultSesameVoiceFailed: "call.in-progress.error-vapifault-sesame-voice-failed",
CallInProgressErrorVapifaultInworldVoiceFailed: "call.in-progress.error-vapifault-inworld-voice-failed",
CallInProgressErrorVapifaultMinimaxVoiceFailed: "call.in-progress.error-vapifault-minimax-voice-failed",
+ CallInProgressErrorVapifaultWellsaidVoiceFailed: "call.in-progress.error-vapifault-wellsaid-voice-failed",
CallInProgressErrorVapifaultTavusVideoFailed: "call.in-progress.error-vapifault-tavus-video-failed",
PipelineErrorVapiLlmFailed: "pipeline-error-vapi-llm-failed",
PipelineErrorVapi400BadRequestValidationFailed: "pipeline-error-vapi-400-bad-request-validation-failed",
diff --git a/src/api/types/CallHookTranscriberEndpointedSpeechLowConfidence.ts b/src/api/types/CallHookTranscriberEndpointedSpeechLowConfidence.ts
new file mode 100644
index 0000000..91dc12f
--- /dev/null
+++ b/src/api/types/CallHookTranscriberEndpointedSpeechLowConfidence.ts
@@ -0,0 +1,12 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface CallHookTranscriberEndpointedSpeechLowConfidence {
+ /** This is the set of actions to perform when the hook triggers */
+ do: Vapi.CallHookTranscriberEndpointedSpeechLowConfidenceDoItem[];
+ /** This is the event that triggers this hook */
+ on: string;
+ /** This is the options for the hook including confidence thresholds */
+ options?: Vapi.EndpointedSpeechLowConfidenceOptions;
+}
diff --git a/src/api/types/CallHookTranscriberEndpointedSpeechLowConfidenceDoItem.ts b/src/api/types/CallHookTranscriberEndpointedSpeechLowConfidenceDoItem.ts
new file mode 100644
index 0000000..e6ea6ff
--- /dev/null
+++ b/src/api/types/CallHookTranscriberEndpointedSpeechLowConfidenceDoItem.ts
@@ -0,0 +1,5 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export type CallHookTranscriberEndpointedSpeechLowConfidenceDoItem = Vapi.SayHookAction | Vapi.ToolCallHookAction;
diff --git a/src/api/types/Campaign.ts b/src/api/types/Campaign.ts
index 0df2bad..6232292 100644
--- a/src/api/types/Campaign.ts
+++ b/src/api/types/Campaign.ts
@@ -9,16 +9,20 @@ export interface Campaign {
endedReason?: Vapi.CampaignEndedReason;
/** This is the name of the campaign. This is just for your own reference. */
name: string;
- /** This is the assistant ID that will be used for the campaign calls. Note: Either assistantId or workflowId can be used, but not both. */
+ /** This is the assistant ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used. */
assistantId?: string;
- /** This is the workflow ID that will be used for the campaign calls. Note: Either assistantId or workflowId can be used, but not both. */
+ /** This is the workflow ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used. */
workflowId?: string;
- /** This is the phone number ID that will be used for the campaign calls. */
- phoneNumberId: string;
+ /** This is the squad ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used. */
+ squadId?: string;
+ /** This is the phone number ID that will be used for the campaign calls. Required if dialPlan is not provided. Note: phoneNumberId and dialPlan are mutually exclusive. */
+ phoneNumberId?: string;
+ /** This is a list of dial entries, each specifying a phone number and the customers to call using that number. Use this when you want different phone numbers to call different sets of customers. Note: phoneNumberId and dialPlan are mutually exclusive. */
+ dialPlan?: Vapi.DialPlanEntry[];
/** This is the schedule plan for the campaign. Calls will start at startedAt and continue until your organization’s concurrency limit is reached. Any remaining calls will be retried for up to one hour as capacity becomes available. After that hour or after latestAt, whichever comes first, any calls that couldn’t be placed won’t be retried. */
schedulePlan?: Vapi.SchedulePlan;
- /** These are the customers that will be called in the campaign. */
- customers: Vapi.CreateCustomerDto[];
+ /** These are the customers that will be called in the campaign. Required if dialPlan is not provided. */
+ customers?: Vapi.CreateCustomerDto[];
/** This is the unique identifier for the campaign. */
id: string;
/** This is the unique identifier for the org that this campaign belongs to. */
diff --git a/src/api/types/CerebrasModelToolsItem.ts b/src/api/types/CerebrasModelToolsItem.ts
index 0fced47..709dec4 100644
--- a/src/api/types/CerebrasModelToolsItem.ts
+++ b/src/api/types/CerebrasModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type CerebrasModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/CodeTool.ts b/src/api/types/CodeTool.ts
new file mode 100644
index 0000000..2fd8811
--- /dev/null
+++ b/src/api/types/CodeTool.ts
@@ -0,0 +1,145 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface CodeTool {
+ /**
+ * These are the messages that will be spoken to the user as the tool is running.
+ *
+ * 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.
+ */
+ messages?: Vapi.CodeToolMessagesItem[];
+ type: "code";
+ /**
+ * This determines if the tool is async.
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * Defaults to synchronous (`false`).
+ */
+ async?: boolean;
+ /**
+ * This is the server where a `tool-calls` webhook will be sent.
+ *
+ * Notes:
+ * - Webhook is sent to this server when a tool call is made.
+ * - Webhook contains the call, assistant, and phone number objects.
+ * - Webhook contains the variables set on the assistant.
+ * - Webhook is sent to the first available URL in this order: {{tool.server.url}}, {{assistant.server.url}}, {{phoneNumber.server.url}}, {{org.server.url}}.
+ * - Webhook expects a response with tool call result.
+ */
+ server?: Vapi.Server;
+ /** TypeScript code to execute when the tool is called */
+ code: string;
+ /** Environment variables available in code via `env` object */
+ environmentVariables?: Vapi.CodeToolEnvironmentVariable[];
+ /**
+ * This is the timeout in seconds for the code execution. Defaults to 10 seconds.
+ * Maximum is 30 seconds to prevent abuse.
+ *
+ * @default 10
+ */
+ timeoutSeconds?: number;
+ /** Credential ID containing the Val Town API key */
+ credentialId?: string;
+ /** Plan to extract variables from the tool response */
+ variableExtractionPlan?: Vapi.VariableExtractionPlan;
+ /** This is the unique identifier for the tool. */
+ id: string;
+ /** This is the unique identifier for the organization that this tool belongs to. */
+ orgId: string;
+ /** This is the ISO 8601 date-time string of when the tool was created. */
+ createdAt: string;
+ /** This is the ISO 8601 date-time string of when the tool was last updated. */
+ updatedAt: string;
+ /**
+ * This is the plan to reject a tool call based on the conversation state.
+ *
+ * // Example 1: Reject endCall if user didn't say goodbye
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'regex',
+ * regex: '(?i)\\b(bye|goodbye|farewell|see you later|take care)\\b',
+ * target: { position: -1, role: 'user' },
+ * negate: true // Reject if pattern does NOT match
+ * }]
+ * }
+ * ```
+ *
+ * // Example 2: Reject transfer if user is actually asking a question
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'regex',
+ * regex: '\\?',
+ * target: { position: -1, role: 'user' }
+ * }]
+ * }
+ * ```
+ *
+ * // Example 3: Reject transfer if user didn't mention transfer recently
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'liquid',
+ * liquid: `{% assign recentMessages = messages | last: 5 %}
+ * {% assign userMessages = recentMessages | where: 'role', 'user' %}
+ * {% assign mentioned = false %}
+ * {% for msg in userMessages %}
+ * {% if msg.content contains 'transfer' or msg.content contains 'connect' or msg.content contains 'speak to' %}
+ * {% assign mentioned = true %}
+ * {% break %}
+ * {% endif %}
+ * {% endfor %}
+ * {% if mentioned %}
+ * false
+ * {% else %}
+ * true
+ * {% endif %}`
+ * }]
+ * }
+ * ```
+ *
+ * // Example 4: Reject endCall if the bot is looping and trying to exit
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'liquid',
+ * liquid: `{% assign recentMessages = messages | last: 6 %}
+ * {% assign userMessages = recentMessages | where: 'role', 'user' | reverse %}
+ * {% if userMessages.size < 3 %}
+ * false
+ * {% else %}
+ * {% assign msg1 = userMessages[0].content | downcase %}
+ * {% assign msg2 = userMessages[1].content | downcase %}
+ * {% assign msg3 = userMessages[2].content | downcase %}
+ * {% comment %} Check for repetitive messages {% endcomment %}
+ * {% if msg1 == msg2 or msg1 == msg3 or msg2 == msg3 %}
+ * true
+ * {% comment %} Check for common loop phrases {% endcomment %}
+ * {% elsif msg1 contains 'cool thanks' or msg2 contains 'cool thanks' or msg3 contains 'cool thanks' %}
+ * true
+ * {% elsif msg1 contains 'okay thanks' or msg2 contains 'okay thanks' or msg3 contains 'okay thanks' %}
+ * true
+ * {% elsif msg1 contains 'got it' or msg2 contains 'got it' or msg3 contains 'got it' %}
+ * true
+ * {% else %}
+ * false
+ * {% endif %}
+ * {% endif %}`
+ * }]
+ * }
+ * ```
+ */
+ rejectionPlan?: Vapi.ToolRejectionPlan;
+ /**
+ * This is the function definition of the tool.
+ *
+ * For the Code tool, this defines the name, description, and parameters that the model
+ * will use to understand when and how to call this tool.
+ */
+ function?: Vapi.OpenAiFunction;
+}
diff --git a/src/api/types/CodeToolEnvironmentVariable.ts b/src/api/types/CodeToolEnvironmentVariable.ts
new file mode 100644
index 0000000..75f7888
--- /dev/null
+++ b/src/api/types/CodeToolEnvironmentVariable.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export interface CodeToolEnvironmentVariable {
+ /** Name of the environment variable */
+ name: string;
+ /** Value of the environment variable. Supports Liquid templates. */
+ value: string;
+}
diff --git a/src/api/types/CodeToolMessagesItem.ts b/src/api/types/CodeToolMessagesItem.ts
new file mode 100644
index 0000000..80781c1
--- /dev/null
+++ b/src/api/types/CodeToolMessagesItem.ts
@@ -0,0 +1,9 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export type CodeToolMessagesItem =
+ | Vapi.ToolMessageStart
+ | Vapi.ToolMessageComplete
+ | Vapi.ToolMessageFailed
+ | Vapi.ToolMessageDelayed;
diff --git a/src/api/types/ConversationNodeToolsItem.ts b/src/api/types/ConversationNodeToolsItem.ts
index b6a2f21..bbea3e0 100644
--- a/src/api/types/ConversationNodeToolsItem.ts
+++ b/src/api/types/ConversationNodeToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type ConversationNodeToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/ConversationNodeVoice.ts b/src/api/types/ConversationNodeVoice.ts
index 09e457c..720bdce 100644
--- a/src/api/types/ConversationNodeVoice.ts
+++ b/src/api/types/ConversationNodeVoice.ts
@@ -18,6 +18,7 @@ export type ConversationNodeVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/CostBreakdown.ts b/src/api/types/CostBreakdown.ts
index 821d5e8..b239cd2 100644
--- a/src/api/types/CostBreakdown.ts
+++ b/src/api/types/CostBreakdown.ts
@@ -21,6 +21,8 @@ export interface CostBreakdown {
llmPromptTokens?: number;
/** This is the LLM completion tokens used for the call. */
llmCompletionTokens?: number;
+ /** This is the LLM cached prompt tokens used for the call. */
+ llmCachedPromptTokens?: number;
/** This is the TTS characters used for the call. */
ttsCharacters?: number;
/** This is the cost of the analysis. */
diff --git a/src/api/types/CreateApiRequestToolDto.ts b/src/api/types/CreateApiRequestToolDto.ts
index 93a33fb..bacd0ba 100644
--- a/src/api/types/CreateApiRequestToolDto.ts
+++ b/src/api/types/CreateApiRequestToolDto.ts
@@ -19,6 +19,8 @@ export interface CreateApiRequestToolDto {
timeoutSeconds?: number;
/** The credential ID for API request authentication */
credentialId?: string;
+ /** This is the paths to encrypt in the request body if credentialId and encryptionPlan are defined. */
+ encryptedPaths?: string[];
/**
* This is the name of the tool. This will be passed to the model.
*
diff --git a/src/api/types/CreateAssistantDtoCredentialsItem.ts b/src/api/types/CreateAssistantDtoCredentialsItem.ts
index 5ea5ff9..76afaaf 100644
--- a/src/api/types/CreateAssistantDtoCredentialsItem.ts
+++ b/src/api/types/CreateAssistantDtoCredentialsItem.ts
@@ -53,4 +53,5 @@ export type CreateAssistantDtoCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/CreateAssistantDtoVoice.ts b/src/api/types/CreateAssistantDtoVoice.ts
index 2774b22..c362d23 100644
--- a/src/api/types/CreateAssistantDtoVoice.ts
+++ b/src/api/types/CreateAssistantDtoVoice.ts
@@ -16,6 +16,7 @@ export type CreateAssistantDtoVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/CreateAzureCredentialDtoRegion.ts b/src/api/types/CreateAzureCredentialDtoRegion.ts
index 4a2d575..cd5dded 100644
--- a/src/api/types/CreateAzureCredentialDtoRegion.ts
+++ b/src/api/types/CreateAzureCredentialDtoRegion.ts
@@ -8,16 +8,20 @@ export const CreateAzureCredentialDtoRegion = {
Eastus2: "eastus2",
Eastus: "eastus",
France: "france",
+ Germanywestcentral: "germanywestcentral",
India: "india",
Japaneast: "japaneast",
Japanwest: "japanwest",
- Uaenorth: "uaenorth",
Northcentralus: "northcentralus",
Norway: "norway",
+ Polandcentral: "polandcentral",
Southcentralus: "southcentralus",
+ Spaincentral: "spaincentral",
Swedencentral: "swedencentral",
Switzerland: "switzerland",
+ Uaenorth: "uaenorth",
Uk: "uk",
+ Westeurope: "westeurope",
Westus: "westus",
Westus3: "westus3",
} as const;
diff --git a/src/api/types/CreateAzureOpenAiCredentialDtoModelsItem.ts b/src/api/types/CreateAzureOpenAiCredentialDtoModelsItem.ts
index ad593a2..1d38459 100644
--- a/src/api/types/CreateAzureOpenAiCredentialDtoModelsItem.ts
+++ b/src/api/types/CreateAzureOpenAiCredentialDtoModelsItem.ts
@@ -1,6 +1,10 @@
// This file was auto-generated by Fern from our API Definition.
export const CreateAzureOpenAiCredentialDtoModelsItem = {
+ Gpt52: "gpt-5.2",
+ Gpt52Chat: "gpt-5.2-chat",
+ Gpt51: "gpt-5.1",
+ Gpt51Chat: "gpt-5.1-chat",
Gpt5: "gpt-5",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
diff --git a/src/api/types/CreateAzureOpenAiCredentialDtoRegion.ts b/src/api/types/CreateAzureOpenAiCredentialDtoRegion.ts
index 65b4e96..80023ca 100644
--- a/src/api/types/CreateAzureOpenAiCredentialDtoRegion.ts
+++ b/src/api/types/CreateAzureOpenAiCredentialDtoRegion.ts
@@ -7,16 +7,20 @@ export const CreateAzureOpenAiCredentialDtoRegion = {
Eastus2: "eastus2",
Eastus: "eastus",
France: "france",
+ Germanywestcentral: "germanywestcentral",
India: "india",
Japaneast: "japaneast",
Japanwest: "japanwest",
- Uaenorth: "uaenorth",
Northcentralus: "northcentralus",
Norway: "norway",
+ Polandcentral: "polandcentral",
Southcentralus: "southcentralus",
+ Spaincentral: "spaincentral",
Swedencentral: "swedencentral",
Switzerland: "switzerland",
+ Uaenorth: "uaenorth",
Uk: "uk",
+ Westeurope: "westeurope",
Westus: "westus",
Westus3: "westus3",
} as const;
diff --git a/src/api/types/CreateCodeToolDto.ts b/src/api/types/CreateCodeToolDto.ts
new file mode 100644
index 0000000..52337c9
--- /dev/null
+++ b/src/api/types/CreateCodeToolDto.ts
@@ -0,0 +1,138 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface CreateCodeToolDto {
+ /**
+ * These are the messages that will be spoken to the user as the tool is running.
+ *
+ * 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.
+ */
+ messages?: Vapi.CreateCodeToolDtoMessagesItem[];
+ /** The type of tool. "code" for Code tool. */
+ type: Vapi.CreateCodeToolDtoType;
+ /**
+ * This determines if the tool is async.
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * Defaults to synchronous (`false`).
+ */
+ async?: boolean;
+ /**
+ * This is the server where a `tool-calls` webhook will be sent.
+ *
+ * Notes:
+ * - Webhook is sent to this server when a tool call is made.
+ * - Webhook contains the call, assistant, and phone number objects.
+ * - Webhook contains the variables set on the assistant.
+ * - Webhook is sent to the first available URL in this order: {{tool.server.url}}, {{assistant.server.url}}, {{phoneNumber.server.url}}, {{org.server.url}}.
+ * - Webhook expects a response with tool call result.
+ */
+ server?: Vapi.Server;
+ /** TypeScript code to execute when the tool is called */
+ code: string;
+ /** Environment variables available in code via `env` object */
+ environmentVariables?: Vapi.CodeToolEnvironmentVariable[];
+ /**
+ * This is the timeout in seconds for the code execution. Defaults to 10 seconds.
+ * Maximum is 30 seconds to prevent abuse.
+ *
+ * @default 10
+ */
+ timeoutSeconds?: number;
+ /** Credential ID containing the Val Town API key */
+ credentialId?: string;
+ /** Plan to extract variables from the tool response */
+ variableExtractionPlan?: Vapi.VariableExtractionPlan;
+ /**
+ * This is the function definition of the tool.
+ *
+ * For the Code tool, this defines the name, description, and parameters that the model
+ * will use to understand when and how to call this tool.
+ */
+ function?: Vapi.OpenAiFunction;
+ /**
+ * This is the plan to reject a tool call based on the conversation state.
+ *
+ * // Example 1: Reject endCall if user didn't say goodbye
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'regex',
+ * regex: '(?i)\\b(bye|goodbye|farewell|see you later|take care)\\b',
+ * target: { position: -1, role: 'user' },
+ * negate: true // Reject if pattern does NOT match
+ * }]
+ * }
+ * ```
+ *
+ * // Example 2: Reject transfer if user is actually asking a question
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'regex',
+ * regex: '\\?',
+ * target: { position: -1, role: 'user' }
+ * }]
+ * }
+ * ```
+ *
+ * // Example 3: Reject transfer if user didn't mention transfer recently
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'liquid',
+ * liquid: `{% assign recentMessages = messages | last: 5 %}
+ * {% assign userMessages = recentMessages | where: 'role', 'user' %}
+ * {% assign mentioned = false %}
+ * {% for msg in userMessages %}
+ * {% if msg.content contains 'transfer' or msg.content contains 'connect' or msg.content contains 'speak to' %}
+ * {% assign mentioned = true %}
+ * {% break %}
+ * {% endif %}
+ * {% endfor %}
+ * {% if mentioned %}
+ * false
+ * {% else %}
+ * true
+ * {% endif %}`
+ * }]
+ * }
+ * ```
+ *
+ * // Example 4: Reject endCall if the bot is looping and trying to exit
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'liquid',
+ * liquid: `{% assign recentMessages = messages | last: 6 %}
+ * {% assign userMessages = recentMessages | where: 'role', 'user' | reverse %}
+ * {% if userMessages.size < 3 %}
+ * false
+ * {% else %}
+ * {% assign msg1 = userMessages[0].content | downcase %}
+ * {% assign msg2 = userMessages[1].content | downcase %}
+ * {% assign msg3 = userMessages[2].content | downcase %}
+ * {% comment %} Check for repetitive messages {% endcomment %}
+ * {% if msg1 == msg2 or msg1 == msg3 or msg2 == msg3 %}
+ * true
+ * {% comment %} Check for common loop phrases {% endcomment %}
+ * {% elsif msg1 contains 'cool thanks' or msg2 contains 'cool thanks' or msg3 contains 'cool thanks' %}
+ * true
+ * {% elsif msg1 contains 'okay thanks' or msg2 contains 'okay thanks' or msg3 contains 'okay thanks' %}
+ * true
+ * {% elsif msg1 contains 'got it' or msg2 contains 'got it' or msg3 contains 'got it' %}
+ * true
+ * {% else %}
+ * false
+ * {% endif %}
+ * {% endif %}`
+ * }]
+ * }
+ * ```
+ */
+ rejectionPlan?: Vapi.ToolRejectionPlan;
+}
diff --git a/src/api/types/CreateCodeToolDtoMessagesItem.ts b/src/api/types/CreateCodeToolDtoMessagesItem.ts
new file mode 100644
index 0000000..e0a6236
--- /dev/null
+++ b/src/api/types/CreateCodeToolDtoMessagesItem.ts
@@ -0,0 +1,9 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export type CreateCodeToolDtoMessagesItem =
+ | Vapi.ToolMessageStart
+ | Vapi.ToolMessageComplete
+ | Vapi.ToolMessageFailed
+ | Vapi.ToolMessageDelayed;
diff --git a/src/api/types/CreateCodeToolDtoType.ts b/src/api/types/CreateCodeToolDtoType.ts
new file mode 100644
index 0000000..9bb9b41
--- /dev/null
+++ b/src/api/types/CreateCodeToolDtoType.ts
@@ -0,0 +1,7 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** The type of tool. "code" for Code tool. */
+export const CreateCodeToolDtoType = {
+ Code: "code",
+} as const;
+export type CreateCodeToolDtoType = (typeof CreateCodeToolDtoType)[keyof typeof CreateCodeToolDtoType];
diff --git a/src/api/types/CreateCustomCredentialDto.ts b/src/api/types/CreateCustomCredentialDto.ts
index d7395d1..c6a7b7a 100644
--- a/src/api/types/CreateCustomCredentialDto.ts
+++ b/src/api/types/CreateCustomCredentialDto.ts
@@ -6,6 +6,7 @@ export interface CreateCustomCredentialDto {
provider: "custom-credential";
/** This is the authentication plan. Supports OAuth2 RFC 6749, HMAC signing, and Bearer authentication. */
authenticationPlan: Vapi.CreateCustomCredentialDtoAuthenticationPlan;
+ encryptionPlan: Vapi.PublicKeyEncryptionPlan;
/** This is the name of credential. This is just for your reference. */
name?: string;
}
diff --git a/src/api/types/CreateOrgDtoChannel.ts b/src/api/types/CreateOrgDtoChannel.ts
index 27367ed..ef92e46 100644
--- a/src/api/types/CreateOrgDtoChannel.ts
+++ b/src/api/types/CreateOrgDtoChannel.ts
@@ -2,7 +2,9 @@
/** This is the channel of the org. There is the cluster the API traffic for the org will be directed. */
export const CreateOrgDtoChannel = {
+ Daily: "daily",
Default: "default",
Weekly: "weekly",
+ Intuit: "intuit",
} as const;
export type CreateOrgDtoChannel = (typeof CreateOrgDtoChannel)[keyof typeof CreateOrgDtoChannel];
diff --git a/src/api/types/CreateToolTemplateDtoDetails.ts b/src/api/types/CreateToolTemplateDtoDetails.ts
index 19248a6..484460d 100644
--- a/src/api/types/CreateToolTemplateDtoDetails.ts
+++ b/src/api/types/CreateToolTemplateDtoDetails.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type CreateToolTemplateDtoDetails =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/UpdateSmallestAiCredentialDto.ts b/src/api/types/CreateWellSaidCredentialDto.ts
similarity index 69%
rename from src/api/types/UpdateSmallestAiCredentialDto.ts
rename to src/api/types/CreateWellSaidCredentialDto.ts
index 4fa6309..a65e9b9 100644
--- a/src/api/types/UpdateSmallestAiCredentialDto.ts
+++ b/src/api/types/CreateWellSaidCredentialDto.ts
@@ -1,8 +1,9 @@
// This file was auto-generated by Fern from our API Definition.
-export interface UpdateSmallestAiCredentialDto {
+export interface CreateWellSaidCredentialDto {
+ provider: "wellsaid";
/** This is not returned in the API. */
- apiKey?: string;
+ apiKey: string;
/** This is the name of credential. This is just for your reference. */
name?: string;
}
diff --git a/src/api/types/CreateWorkflowDtoCredentialsItem.ts b/src/api/types/CreateWorkflowDtoCredentialsItem.ts
index daaaf3c..77f5a22 100644
--- a/src/api/types/CreateWorkflowDtoCredentialsItem.ts
+++ b/src/api/types/CreateWorkflowDtoCredentialsItem.ts
@@ -53,4 +53,5 @@ export type CreateWorkflowDtoCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/CreateWorkflowDtoVoice.ts b/src/api/types/CreateWorkflowDtoVoice.ts
index e989658..a1d97b4 100644
--- a/src/api/types/CreateWorkflowDtoVoice.ts
+++ b/src/api/types/CreateWorkflowDtoVoice.ts
@@ -18,6 +18,7 @@ export type CreateWorkflowDtoVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/CredentialEndUser.ts b/src/api/types/CredentialEndUser.ts
index 4e0048d..0424791 100644
--- a/src/api/types/CredentialEndUser.ts
+++ b/src/api/types/CredentialEndUser.ts
@@ -1,6 +1,7 @@
// This file was auto-generated by Fern from our API Definition.
export interface CredentialEndUser {
+ endUserEmail?: string | null;
endUserId: string;
organizationId: string;
tags?: Record;
diff --git a/src/api/types/CustomCredential.ts b/src/api/types/CustomCredential.ts
index 8d9a7a4..bd0fa2d 100644
--- a/src/api/types/CustomCredential.ts
+++ b/src/api/types/CustomCredential.ts
@@ -6,6 +6,7 @@ export interface CustomCredential {
provider: Vapi.CustomCredentialProvider;
/** This is the authentication plan. Supports OAuth2 RFC 6749, HMAC signing, and Bearer authentication. */
authenticationPlan: Vapi.CustomCredentialAuthenticationPlan;
+ encryptionPlan: Vapi.PublicKeyEncryptionPlan;
/** This is the unique identifier for the credential. */
id: string;
/** This is the unique identifier for the org that this credential belongs to. */
diff --git a/src/api/types/CustomLlmModelToolsItem.ts b/src/api/types/CustomLlmModelToolsItem.ts
index e2584ba..c213b10 100644
--- a/src/api/types/CustomLlmModelToolsItem.ts
+++ b/src/api/types/CustomLlmModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type CustomLlmModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/DeepInfraModelToolsItem.ts b/src/api/types/DeepInfraModelToolsItem.ts
index 1e50905..1772a7d 100644
--- a/src/api/types/DeepInfraModelToolsItem.ts
+++ b/src/api/types/DeepInfraModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type DeepInfraModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/DeepSeekModelToolsItem.ts b/src/api/types/DeepSeekModelToolsItem.ts
index b714d84..2f03bf8 100644
--- a/src/api/types/DeepSeekModelToolsItem.ts
+++ b/src/api/types/DeepSeekModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type DeepSeekModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/DialPlanEntry.ts b/src/api/types/DialPlanEntry.ts
new file mode 100644
index 0000000..c155716
--- /dev/null
+++ b/src/api/types/DialPlanEntry.ts
@@ -0,0 +1,10 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface DialPlanEntry {
+ /** The phone number ID to use for calling the customers in this entry. */
+ phoneNumberId: string;
+ /** The list of customers to call using this phone number. */
+ customers: Vapi.CreateCustomerDto[];
+}
diff --git a/src/api/types/EndpointedSpeechLowConfidenceOptions.ts b/src/api/types/EndpointedSpeechLowConfidenceOptions.ts
new file mode 100644
index 0000000..3d0335c
--- /dev/null
+++ b/src/api/types/EndpointedSpeechLowConfidenceOptions.ts
@@ -0,0 +1,18 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export interface EndpointedSpeechLowConfidenceOptions {
+ /**
+ * This is the minimum confidence threshold.
+ * Transcripts with confidence below this value will be discarded.
+ *
+ * @default confidenceMax - 0.2
+ */
+ confidenceMin?: number;
+ /**
+ * This is the maximum confidence threshold.
+ * Transcripts with confidence at or above this value will be processed normally.
+ *
+ * @default transcriber's confidenceThreshold
+ */
+ confidenceMax?: number;
+}
diff --git a/src/api/types/EvalAnthropicModel.ts b/src/api/types/EvalAnthropicModel.ts
index 38388aa..5ecf7de 100644
--- a/src/api/types/EvalAnthropicModel.ts
+++ b/src/api/types/EvalAnthropicModel.ts
@@ -10,7 +10,6 @@ export interface EvalAnthropicModel {
/**
* This is the optional configuration for Anthropic's thinking feature.
*
- * - Only applicable for `claude-3-7-sonnet-20250219` model.
* - If provided, `maxTokens` must be greater than `thinking.budgetTokens`.
*/
thinking?: Vapi.AnthropicThinkingConfig;
diff --git a/src/api/types/EvalAnthropicModelModel.ts b/src/api/types/EvalAnthropicModelModel.ts
index 1c1fe7b..0eb0ab4 100644
--- a/src/api/types/EvalAnthropicModelModel.ts
+++ b/src/api/types/EvalAnthropicModelModel.ts
@@ -10,6 +10,7 @@ export const EvalAnthropicModelModel = {
Claude35Haiku20241022: "claude-3-5-haiku-20241022",
Claude37Sonnet20250219: "claude-3-7-sonnet-20250219",
ClaudeOpus420250514: "claude-opus-4-20250514",
+ ClaudeOpus4520251101: "claude-opus-4-5-20251101",
ClaudeSonnet420250514: "claude-sonnet-4-20250514",
ClaudeSonnet4520250929: "claude-sonnet-4-5-20250929",
ClaudeHaiku4520251001: "claude-haiku-4-5-20251001",
diff --git a/src/api/types/EvalOpenAiModelModel.ts b/src/api/types/EvalOpenAiModelModel.ts
index d86a93c..90b2d70 100644
--- a/src/api/types/EvalOpenAiModelModel.ts
+++ b/src/api/types/EvalOpenAiModelModel.ts
@@ -7,9 +7,12 @@
* This is helpful when you are required to comply with Data Residency rules. Learn more about Azure regions here https://azure.microsoft.com/en-us/explore/global-infrastructure/data-residency/.
*/
export const EvalOpenAiModelModel = {
+ Gpt52: "gpt-5.2",
+ Gpt52ChatLatest: "gpt-5.2-chat-latest",
Gpt51: "gpt-5.1",
Gpt51ChatLatest: "gpt-5.1-chat-latest",
Gpt5: "gpt-5",
+ Gpt5ChatLatest: "gpt-5-chat-latest",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
Gpt4120250414: "gpt-4.1-2025-04-14",
@@ -48,12 +51,20 @@ export const EvalOpenAiModelModel = {
Gpt4120250414Westus3: "gpt-4.1-2025-04-14:westus3",
Gpt4120250414Northcentralus: "gpt-4.1-2025-04-14:northcentralus",
Gpt4120250414Southcentralus: "gpt-4.1-2025-04-14:southcentralus",
+ Gpt4120250414Westeurope: "gpt-4.1-2025-04-14:westeurope",
+ Gpt4120250414Germanywestcentral: "gpt-4.1-2025-04-14:germanywestcentral",
+ Gpt4120250414Polandcentral: "gpt-4.1-2025-04-14:polandcentral",
+ Gpt4120250414Spaincentral: "gpt-4.1-2025-04-14:spaincentral",
Gpt41Mini20250414Westus: "gpt-4.1-mini-2025-04-14:westus",
Gpt41Mini20250414Eastus2: "gpt-4.1-mini-2025-04-14:eastus2",
Gpt41Mini20250414Eastus: "gpt-4.1-mini-2025-04-14:eastus",
Gpt41Mini20250414Westus3: "gpt-4.1-mini-2025-04-14:westus3",
Gpt41Mini20250414Northcentralus: "gpt-4.1-mini-2025-04-14:northcentralus",
Gpt41Mini20250414Southcentralus: "gpt-4.1-mini-2025-04-14:southcentralus",
+ Gpt41Mini20250414Westeurope: "gpt-4.1-mini-2025-04-14:westeurope",
+ Gpt41Mini20250414Germanywestcentral: "gpt-4.1-mini-2025-04-14:germanywestcentral",
+ Gpt41Mini20250414Polandcentral: "gpt-4.1-mini-2025-04-14:polandcentral",
+ Gpt41Mini20250414Spaincentral: "gpt-4.1-mini-2025-04-14:spaincentral",
Gpt41Nano20250414Westus: "gpt-4.1-nano-2025-04-14:westus",
Gpt41Nano20250414Eastus2: "gpt-4.1-nano-2025-04-14:eastus2",
Gpt41Nano20250414Westus3: "gpt-4.1-nano-2025-04-14:westus3",
@@ -65,6 +76,10 @@ export const EvalOpenAiModelModel = {
Gpt4O20241120Eastus: "gpt-4o-2024-11-20:eastus",
Gpt4O20241120Westus3: "gpt-4o-2024-11-20:westus3",
Gpt4O20241120Southcentralus: "gpt-4o-2024-11-20:southcentralus",
+ Gpt4O20241120Westeurope: "gpt-4o-2024-11-20:westeurope",
+ Gpt4O20241120Germanywestcentral: "gpt-4o-2024-11-20:germanywestcentral",
+ Gpt4O20241120Polandcentral: "gpt-4o-2024-11-20:polandcentral",
+ Gpt4O20241120Spaincentral: "gpt-4o-2024-11-20:spaincentral",
Gpt4O20240806Westus: "gpt-4o-2024-08-06:westus",
Gpt4O20240806Westus3: "gpt-4o-2024-08-06:westus3",
Gpt4O20240806Eastus: "gpt-4o-2024-08-06:eastus",
diff --git a/src/api/types/ExportChatDto.ts b/src/api/types/ExportChatDto.ts
new file mode 100644
index 0000000..e6b71a0
--- /dev/null
+++ b/src/api/types/ExportChatDto.ts
@@ -0,0 +1,53 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface ExportChatDto {
+ /** This is the unique identifier for the chat to filter by. */
+ id?: string;
+ /** This is the unique identifier for the assistant that will be used for the chat. */
+ assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
+ /** This is the unique identifier for the squad that will be used for the chat. */
+ squadId?: string;
+ /** This is the unique identifier for the session that will be used for the chat. */
+ sessionId?: string;
+ /** This is the unique identifier for the previous chat to filter by. */
+ previousChatId?: string;
+ /** Columns to include in the CSV export */
+ columns?: Vapi.ExportChatDtoColumns;
+ /**
+ * This is the email address to send the export to.
+ * Required if userId is not available in the request context.
+ */
+ email?: string;
+ /**
+ * This is the format of the export.
+ *
+ * @default csv
+ */
+ format?: Vapi.ExportChatDtoFormat;
+ /** This is the page number to return. Defaults to 1. */
+ page?: number;
+ /** This is the sort order for pagination. Defaults to 'DESC'. */
+ sortOrder?: Vapi.ExportChatDtoSortOrder;
+ /** This is the maximum number of items to return. Defaults to 100. */
+ limit?: number;
+ /** This will return items where the createdAt is greater than the specified value. */
+ createdAtGt?: string;
+ /** This will return items where the createdAt is less than the specified value. */
+ createdAtLt?: string;
+ /** This will return items where the createdAt is greater than or equal to the specified value. */
+ createdAtGe?: string;
+ /** This will return items where the createdAt is less than or equal to the specified value. */
+ createdAtLe?: string;
+ /** This will return items where the updatedAt is greater than the specified value. */
+ updatedAtGt?: string;
+ /** This will return items where the updatedAt is less than the specified value. */
+ updatedAtLt?: string;
+ /** This will return items where the updatedAt is greater than or equal to the specified value. */
+ updatedAtGe?: string;
+ /** This will return items where the updatedAt is less than or equal to the specified value. */
+ updatedAtLe?: string;
+}
diff --git a/src/api/types/ExportChatDtoColumns.ts b/src/api/types/ExportChatDtoColumns.ts
new file mode 100644
index 0000000..58b1ed1
--- /dev/null
+++ b/src/api/types/ExportChatDtoColumns.ts
@@ -0,0 +1,16 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** Columns to include in the CSV export */
+export const ExportChatDtoColumns = {
+ Id: "id",
+ AssistantId: "assistantId",
+ SquadId: "squadId",
+ SessionId: "sessionId",
+ PreviousChatId: "previousChatId",
+ Cost: "cost",
+ Messages: "messages",
+ Output: "output",
+ CreatedAt: "createdAt",
+ UpdatedAt: "updatedAt",
+} as const;
+export type ExportChatDtoColumns = (typeof ExportChatDtoColumns)[keyof typeof ExportChatDtoColumns];
diff --git a/src/api/types/ExportChatDtoFormat.ts b/src/api/types/ExportChatDtoFormat.ts
new file mode 100644
index 0000000..26c181d
--- /dev/null
+++ b/src/api/types/ExportChatDtoFormat.ts
@@ -0,0 +1,12 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/**
+ * This is the format of the export.
+ *
+ * @default csv
+ */
+export const ExportChatDtoFormat = {
+ Csv: "csv",
+ Json: "json",
+} as const;
+export type ExportChatDtoFormat = (typeof ExportChatDtoFormat)[keyof typeof ExportChatDtoFormat];
diff --git a/src/api/types/ExportChatDtoSortOrder.ts b/src/api/types/ExportChatDtoSortOrder.ts
new file mode 100644
index 0000000..6faba87
--- /dev/null
+++ b/src/api/types/ExportChatDtoSortOrder.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** This is the sort order for pagination. Defaults to 'DESC'. */
+export const ExportChatDtoSortOrder = {
+ Asc: "ASC",
+ Desc: "DESC",
+} as const;
+export type ExportChatDtoSortOrder = (typeof ExportChatDtoSortOrder)[keyof typeof ExportChatDtoSortOrder];
diff --git a/src/api/types/ExportSessionDto.ts b/src/api/types/ExportSessionDto.ts
new file mode 100644
index 0000000..2121386
--- /dev/null
+++ b/src/api/types/ExportSessionDto.ts
@@ -0,0 +1,61 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface ExportSessionDto {
+ /** This is the unique identifier for the session to filter by. */
+ id?: string;
+ /** This is the name of the session to filter by. */
+ name?: string;
+ /** This is the ID of the assistant to filter sessions by. */
+ assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
+ /** This is the ID of the squad to filter sessions by. */
+ squadId?: string;
+ /** This is the ID of the workflow to filter sessions by. */
+ workflowId?: string;
+ /** This is the customer information to filter by. */
+ customer?: Vapi.CreateCustomerDto;
+ /** Filter by any of the specified customer phone numbers (comma-separated). */
+ customerNumberAny?: string;
+ /** Columns to include in the CSV export */
+ columns?: Vapi.ExportSessionDtoColumns;
+ /**
+ * This is the email address to send the export to.
+ * Required if userId is not available in the request context.
+ */
+ email?: string;
+ /**
+ * This is the format of the export.
+ *
+ * @default csv
+ */
+ format?: Vapi.ExportSessionDtoFormat;
+ /** This will return sessions with the specified phoneNumberId. */
+ phoneNumberId?: string;
+ /** This will return sessions with any of the specified phoneNumberIds. */
+ phoneNumberIdAny?: string[];
+ /** This is the page number to return. Defaults to 1. */
+ page?: number;
+ /** This is the sort order for pagination. Defaults to 'DESC'. */
+ sortOrder?: Vapi.ExportSessionDtoSortOrder;
+ /** This is the maximum number of items to return. Defaults to 100. */
+ limit?: number;
+ /** This will return items where the createdAt is greater than the specified value. */
+ createdAtGt?: string;
+ /** This will return items where the createdAt is less than the specified value. */
+ createdAtLt?: string;
+ /** This will return items where the createdAt is greater than or equal to the specified value. */
+ createdAtGe?: string;
+ /** This will return items where the createdAt is less than or equal to the specified value. */
+ createdAtLe?: string;
+ /** This will return items where the updatedAt is greater than the specified value. */
+ updatedAtGt?: string;
+ /** This will return items where the updatedAt is less than the specified value. */
+ updatedAtLt?: string;
+ /** This will return items where the updatedAt is greater than or equal to the specified value. */
+ updatedAtGe?: string;
+ /** This will return items where the updatedAt is less than or equal to the specified value. */
+ updatedAtLe?: string;
+}
diff --git a/src/api/types/ExportSessionDtoColumns.ts b/src/api/types/ExportSessionDtoColumns.ts
new file mode 100644
index 0000000..b425746
--- /dev/null
+++ b/src/api/types/ExportSessionDtoColumns.ts
@@ -0,0 +1,18 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** Columns to include in the CSV export */
+export const ExportSessionDtoColumns = {
+ Id: "id",
+ Name: "name",
+ Status: "status",
+ AssistantId: "assistantId",
+ SquadId: "squadId",
+ CustomerName: "customerName",
+ CustomerNumber: "customerNumber",
+ PhoneNumberId: "phoneNumberId",
+ Cost: "cost",
+ Messages: "messages",
+ CreatedAt: "createdAt",
+ UpdatedAt: "updatedAt",
+} as const;
+export type ExportSessionDtoColumns = (typeof ExportSessionDtoColumns)[keyof typeof ExportSessionDtoColumns];
diff --git a/src/api/types/ExportSessionDtoFormat.ts b/src/api/types/ExportSessionDtoFormat.ts
new file mode 100644
index 0000000..1381fab
--- /dev/null
+++ b/src/api/types/ExportSessionDtoFormat.ts
@@ -0,0 +1,12 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/**
+ * This is the format of the export.
+ *
+ * @default csv
+ */
+export const ExportSessionDtoFormat = {
+ Csv: "csv",
+ Json: "json",
+} as const;
+export type ExportSessionDtoFormat = (typeof ExportSessionDtoFormat)[keyof typeof ExportSessionDtoFormat];
diff --git a/src/api/types/ExportSessionDtoSortOrder.ts b/src/api/types/ExportSessionDtoSortOrder.ts
new file mode 100644
index 0000000..80c731a
--- /dev/null
+++ b/src/api/types/ExportSessionDtoSortOrder.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** This is the sort order for pagination. Defaults to 'DESC'. */
+export const ExportSessionDtoSortOrder = {
+ Asc: "ASC",
+ Desc: "DESC",
+} as const;
+export type ExportSessionDtoSortOrder = (typeof ExportSessionDtoSortOrder)[keyof typeof ExportSessionDtoSortOrder];
diff --git a/src/api/types/FallbackAssemblyAiTranscriber.ts b/src/api/types/FallbackAssemblyAiTranscriber.ts
index da937f2..79099dc 100644
--- a/src/api/types/FallbackAssemblyAiTranscriber.ts
+++ b/src/api/types/FallbackAssemblyAiTranscriber.ts
@@ -40,6 +40,21 @@ export interface FallbackAssemblyAiTranscriber {
* @default 400
*/
maxTurnSilence?: number;
+ /**
+ * Use VAD to assist with endpointing decisions from the transcriber.
+ * When enabled, transcriber endpointing will be buffered if VAD detects the user is still speaking, preventing premature turn-taking.
+ * When disabled, transcriber endpointing will be used immediately regardless of VAD state, allowing for quicker but more aggressive turn-taking.
+ * Note: Only used if startSpeakingPlan.smartEndpointingPlan is not set.
+ *
+ * @default true
+ */
+ vadAssistedEndpointingEnabled?: boolean;
+ /**
+ * This is the speech model used for the streaming session.
+ * Note: Keyterms prompting is not supported with multilingual streaming.
+ * @default 'universal-streaming-english'
+ */
+ speechModel?: Vapi.FallbackAssemblyAiTranscriberSpeechModel;
/** The WebSocket URL that the transcriber connects to. */
realtimeUrl?: string;
/** Add up to 2500 characters of custom vocabulary. */
diff --git a/src/api/types/FallbackAssemblyAiTranscriberLanguage.ts b/src/api/types/FallbackAssemblyAiTranscriberLanguage.ts
index ce7abea..ee22740 100644
--- a/src/api/types/FallbackAssemblyAiTranscriberLanguage.ts
+++ b/src/api/types/FallbackAssemblyAiTranscriberLanguage.ts
@@ -2,6 +2,7 @@
/** This is the language that will be set for the transcription. */
export const FallbackAssemblyAiTranscriberLanguage = {
+ Multi: "multi",
En: "en",
} as const;
export type FallbackAssemblyAiTranscriberLanguage =
diff --git a/src/api/types/FallbackAssemblyAiTranscriberSpeechModel.ts b/src/api/types/FallbackAssemblyAiTranscriberSpeechModel.ts
new file mode 100644
index 0000000..a3daa47
--- /dev/null
+++ b/src/api/types/FallbackAssemblyAiTranscriberSpeechModel.ts
@@ -0,0 +1,13 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/**
+ * This is the speech model used for the streaming session.
+ * Note: Keyterms prompting is not supported with multilingual streaming.
+ * @default 'universal-streaming-english'
+ */
+export const FallbackAssemblyAiTranscriberSpeechModel = {
+ UniversalStreamingEnglish: "universal-streaming-english",
+ UniversalStreamingMultilingual: "universal-streaming-multilingual",
+} as const;
+export type FallbackAssemblyAiTranscriberSpeechModel =
+ (typeof FallbackAssemblyAiTranscriberSpeechModel)[keyof typeof FallbackAssemblyAiTranscriberSpeechModel];
diff --git a/src/api/types/FallbackPlanVoicesItem.ts b/src/api/types/FallbackPlanVoicesItem.ts
index 75ca85b..185b0f1 100644
--- a/src/api/types/FallbackPlanVoicesItem.ts
+++ b/src/api/types/FallbackPlanVoicesItem.ts
@@ -13,6 +13,7 @@ export type FallbackPlanVoicesItem =
| Vapi.FallbackLmntVoice
| Vapi.FallbackOpenAiVoice
| Vapi.FallbackPlayHtVoice
+ | Vapi.FallbackWellSaidVoice
| Vapi.FallbackRimeAiVoice
| Vapi.FallbackSmallestAiVoice
| Vapi.FallbackTavusVoice
diff --git a/src/api/types/FallbackSpeechmaticsTranscriber.ts b/src/api/types/FallbackSpeechmaticsTranscriber.ts
index 5f25b1d..3155c58 100644
--- a/src/api/types/FallbackSpeechmaticsTranscriber.ts
+++ b/src/api/types/FallbackSpeechmaticsTranscriber.ts
@@ -26,20 +26,6 @@ export interface FallbackSpeechmaticsTranscriber {
* @default false
*/
enableDiarization?: boolean;
- /**
- * This sets the maximum number of speakers to detect when diarization is enabled. Only used when enableDiarization is true.
- *
- * @default 2
- */
- maxSpeakers?: number;
- /** Provides friendly speaker labels that map to diarization indices (Speaker 1 -> labels[0]). */
- speakerLabels?: string[];
- /**
- * This enables partial transcripts during speech recognition. When false, only final transcripts are returned.
- *
- * @default true
- */
- enablePartials?: boolean;
/**
* This sets the maximum delay in milliseconds for partial transcripts. Balances latency and accuracy.
*
@@ -48,29 +34,11 @@ export interface FallbackSpeechmaticsTranscriber {
maxDelay?: number;
customVocabulary: Vapi.SpeechmaticsCustomVocabularyItem[];
/**
- * This controls how numbers are formatted in the transcription output.
+ * This controls how numbers, dates, currencies, and other entities are formatted in the transcription output.
*
* @default 'written'
*/
numeralStyle?: Vapi.FallbackSpeechmaticsTranscriberNumeralStyle;
- /**
- * This enables detection of non-speech audio events like music, applause, and laughter.
- *
- * @default false
- */
- enableEntities?: boolean;
- /**
- * This enables automatic punctuation in the transcription output.
- *
- * @default true
- */
- enablePunctuation?: boolean;
- /**
- * This enables automatic capitalization in the transcription output.
- *
- * @default true
- */
- enableCapitalization?: boolean;
/**
* This is the sensitivity level for end-of-turn detection, which determines when a speaker has finished talking. Higher values are more sensitive.
*
@@ -80,6 +48,8 @@ export interface FallbackSpeechmaticsTranscriber {
/**
* This enables removal of disfluencies (um, uh) from the transcript to create cleaner, more professional output.
*
+ * This is only supported for the English language transcriber.
+ *
* @default false
*/
removeDisfluencies?: boolean;
diff --git a/src/api/types/FallbackSpeechmaticsTranscriberLanguage.ts b/src/api/types/FallbackSpeechmaticsTranscriberLanguage.ts
index b180ce0..6b55ae7 100644
--- a/src/api/types/FallbackSpeechmaticsTranscriberLanguage.ts
+++ b/src/api/types/FallbackSpeechmaticsTranscriberLanguage.ts
@@ -34,8 +34,10 @@ export const FallbackSpeechmaticsTranscriberLanguage = {
Lv: "lv",
Lt: "lt",
Ms: "ms",
+ EnMs: "en_ms",
Mt: "mt",
Cmn: "cmn",
+ CmnEn: "cmn_en",
Mr: "mr",
Mn: "mn",
No: "no",
@@ -47,9 +49,12 @@ export const FallbackSpeechmaticsTranscriberLanguage = {
Sk: "sk",
Sl: "sl",
Es: "es",
+ EnEs: "en_es",
Sw: "sw",
Sv: "sv",
+ Tl: "tl",
Ta: "ta",
+ EnTa: "en_ta",
Th: "th",
Tr: "tr",
Uk: "uk",
diff --git a/src/api/types/FallbackSpeechmaticsTranscriberNumeralStyle.ts b/src/api/types/FallbackSpeechmaticsTranscriberNumeralStyle.ts
index 6933903..cd4e274 100644
--- a/src/api/types/FallbackSpeechmaticsTranscriberNumeralStyle.ts
+++ b/src/api/types/FallbackSpeechmaticsTranscriberNumeralStyle.ts
@@ -1,7 +1,7 @@
// This file was auto-generated by Fern from our API Definition.
/**
- * This controls how numbers are formatted in the transcription output.
+ * This controls how numbers, dates, currencies, and other entities are formatted in the transcription output.
*
* @default 'written'
*/
diff --git a/src/api/types/FallbackVapiVoiceVoiceId.ts b/src/api/types/FallbackVapiVoiceVoiceId.ts
index 9a87a74..fb7840a 100644
--- a/src/api/types/FallbackVapiVoiceVoiceId.ts
+++ b/src/api/types/FallbackVapiVoiceVoiceId.ts
@@ -15,5 +15,11 @@ export const FallbackVapiVoiceVoiceId = {
Spencer: "Spencer",
Leah: "Leah",
Tara: "Tara",
+ Jess: "Jess",
+ Leo: "Leo",
+ Dan: "Dan",
+ Mia: "Mia",
+ Zac: "Zac",
+ Zoe: "Zoe",
} as const;
export type FallbackVapiVoiceVoiceId = (typeof FallbackVapiVoiceVoiceId)[keyof typeof FallbackVapiVoiceVoiceId];
diff --git a/src/api/types/FallbackWellSaidVoice.ts b/src/api/types/FallbackWellSaidVoice.ts
new file mode 100644
index 0000000..9afc990
--- /dev/null
+++ b/src/api/types/FallbackWellSaidVoice.ts
@@ -0,0 +1,20 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface FallbackWellSaidVoice {
+ /** This is the flag to toggle voice caching for the assistant. */
+ cachingEnabled?: boolean;
+ /** This is the voice provider that will be used. */
+ provider: Vapi.FallbackWellSaidVoiceProvider;
+ /** The WellSaid speaker ID to synthesize. */
+ voiceId: string;
+ /** This is the model that will be used. */
+ model?: Vapi.FallbackWellSaidVoiceModel;
+ /** Enables limited SSML translation for input text. */
+ enableSsml?: boolean;
+ /** Array of library IDs to use for voice synthesis. */
+ libraryIds?: string[];
+ /** This is the plan for chunking the model output before it is sent to the voice provider. */
+ chunkPlan?: Vapi.ChunkPlan;
+}
diff --git a/src/api/types/FallbackWellSaidVoiceModel.ts b/src/api/types/FallbackWellSaidVoiceModel.ts
new file mode 100644
index 0000000..f19ef61
--- /dev/null
+++ b/src/api/types/FallbackWellSaidVoiceModel.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** This is the model that will be used. */
+export const FallbackWellSaidVoiceModel = {
+ Caruso: "caruso",
+ Legacy: "legacy",
+} as const;
+export type FallbackWellSaidVoiceModel = (typeof FallbackWellSaidVoiceModel)[keyof typeof FallbackWellSaidVoiceModel];
diff --git a/src/api/types/FallbackWellSaidVoiceProvider.ts b/src/api/types/FallbackWellSaidVoiceProvider.ts
new file mode 100644
index 0000000..58087b9
--- /dev/null
+++ b/src/api/types/FallbackWellSaidVoiceProvider.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** This is the voice provider that will be used. */
+export const FallbackWellSaidVoiceProvider = {
+ Wellsaid: "wellsaid",
+} as const;
+export type FallbackWellSaidVoiceProvider =
+ (typeof FallbackWellSaidVoiceProvider)[keyof typeof FallbackWellSaidVoiceProvider];
diff --git a/src/api/types/GetChatPaginatedDto.ts b/src/api/types/GetChatPaginatedDto.ts
index 6ae1c22..c9ca25d 100644
--- a/src/api/types/GetChatPaginatedDto.ts
+++ b/src/api/types/GetChatPaginatedDto.ts
@@ -3,8 +3,12 @@
import type * as Vapi from "../index.js";
export interface GetChatPaginatedDto {
+ /** This is the unique identifier for the chat to filter by. */
+ id?: string;
/** This is the unique identifier for the assistant that will be used for the chat. */
assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
/** This is the unique identifier for the squad that will be used for the chat. */
squadId?: string;
/** This is the unique identifier for the session that will be used for the chat. */
diff --git a/src/api/types/GetSessionPaginatedDto.ts b/src/api/types/GetSessionPaginatedDto.ts
index 4eae77b..514058b 100644
--- a/src/api/types/GetSessionPaginatedDto.ts
+++ b/src/api/types/GetSessionPaginatedDto.ts
@@ -3,16 +3,26 @@
import type * as Vapi from "../index.js";
export interface GetSessionPaginatedDto {
+ /** This is the unique identifier for the session to filter by. */
+ id?: string;
/** This is the name of the session to filter by. */
name?: string;
/** This is the ID of the assistant to filter sessions by. */
assistantId?: string;
+ /** Filter by multiple assistant IDs. Provide as comma-separated values. */
+ assistantIdAny?: string;
/** This is the ID of the squad to filter sessions by. */
squadId?: string;
/** This is the ID of the workflow to filter sessions by. */
workflowId?: string;
/** This is the customer information to filter by. */
customer?: Vapi.CreateCustomerDto;
+ /** Filter by any of the specified customer phone numbers (comma-separated). */
+ customerNumberAny?: string;
+ /** This will return sessions with the specified phoneNumberId. */
+ phoneNumberId?: string;
+ /** This will return sessions with any of the specified phoneNumberIds. */
+ phoneNumberIdAny?: string[];
/** This is the page number to return. Defaults to 1. */
page?: number;
/** This is the sort order for pagination. Defaults to 'DESC'. */
diff --git a/src/api/types/GoogleModelToolsItem.ts b/src/api/types/GoogleModelToolsItem.ts
index 61f5fa3..03c1cbc 100644
--- a/src/api/types/GoogleModelToolsItem.ts
+++ b/src/api/types/GoogleModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type GoogleModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/GroqModelToolsItem.ts b/src/api/types/GroqModelToolsItem.ts
index 0b8c3f0..27a4622 100644
--- a/src/api/types/GroqModelToolsItem.ts
+++ b/src/api/types/GroqModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type GroqModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/InflectionAiModelToolsItem.ts b/src/api/types/InflectionAiModelToolsItem.ts
index cc60557..6234c6a 100644
--- a/src/api/types/InflectionAiModelToolsItem.ts
+++ b/src/api/types/InflectionAiModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type InflectionAiModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/ModelCost.ts b/src/api/types/ModelCost.ts
index 6a76112..1751784 100644
--- a/src/api/types/ModelCost.ts
+++ b/src/api/types/ModelCost.ts
@@ -21,6 +21,8 @@ export interface ModelCost {
promptTokens: number;
/** This is the number of completion tokens generated in the call. These should be total completion tokens used in the call for single assistant calls, while squad calls will have multiple model costs one for each assistant that was used. */
completionTokens: number;
+ /** This is the number of cached prompt tokens used in the call. This is only applicable to certain providers (e.g., OpenAI, Azure OpenAI) that support prompt caching. Cached tokens are billed at a discounted rate. */
+ cachedPromptTokens?: number;
/** This is the cost of the component in USD. */
cost: number;
}
diff --git a/src/api/types/OpenAiModel.ts b/src/api/types/OpenAiModel.ts
index 0f7a6da..e7d5413 100644
--- a/src/api/types/OpenAiModel.ts
+++ b/src/api/types/OpenAiModel.ts
@@ -41,6 +41,25 @@ export interface OpenAiModel {
* @default `strip-unsupported-validation`
*/
toolStrictCompatibilityMode?: Vapi.OpenAiModelToolStrictCompatibilityMode;
+ /**
+ * This controls the prompt cache retention policy for models that support extended caching (GPT-4.1, GPT-5 series).
+ *
+ * - `in_memory`: Default behavior, cache retained in GPU memory only
+ * - `24h`: Extended caching, keeps cached prefixes active for up to 24 hours by offloading to GPU-local storage
+ *
+ * Only applies to models: gpt-5.2, gpt-5.1, gpt-5.1-codex, gpt-5.1-codex-mini, gpt-5.1-chat-latest, gpt-5, gpt-5-codex, gpt-4.1
+ *
+ * @default undefined (uses API default which is 'in_memory')
+ */
+ promptCacheRetention?: Vapi.OpenAiModelPromptCacheRetention;
+ /**
+ * This is the prompt cache key for models that support extended caching (GPT-4.1, GPT-5 series).
+ *
+ * Providing a cache key allows you to share cached prefixes across requests.
+ *
+ * @default undefined
+ */
+ promptCacheKey?: string;
/** This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency. */
temperature?: number;
/** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. */
diff --git a/src/api/types/OpenAiModelFallbackModelsItem.ts b/src/api/types/OpenAiModelFallbackModelsItem.ts
index 480f5b3..445ae93 100644
--- a/src/api/types/OpenAiModelFallbackModelsItem.ts
+++ b/src/api/types/OpenAiModelFallbackModelsItem.ts
@@ -1,9 +1,12 @@
// This file was auto-generated by Fern from our API Definition.
export const OpenAiModelFallbackModelsItem = {
+ Gpt52: "gpt-5.2",
+ Gpt52ChatLatest: "gpt-5.2-chat-latest",
Gpt51: "gpt-5.1",
Gpt51ChatLatest: "gpt-5.1-chat-latest",
Gpt5: "gpt-5",
+ Gpt5ChatLatest: "gpt-5-chat-latest",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
Gpt4120250414: "gpt-4.1-2025-04-14",
@@ -46,12 +49,20 @@ export const OpenAiModelFallbackModelsItem = {
Gpt4120250414Westus3: "gpt-4.1-2025-04-14:westus3",
Gpt4120250414Northcentralus: "gpt-4.1-2025-04-14:northcentralus",
Gpt4120250414Southcentralus: "gpt-4.1-2025-04-14:southcentralus",
+ Gpt4120250414Westeurope: "gpt-4.1-2025-04-14:westeurope",
+ Gpt4120250414Germanywestcentral: "gpt-4.1-2025-04-14:germanywestcentral",
+ Gpt4120250414Polandcentral: "gpt-4.1-2025-04-14:polandcentral",
+ Gpt4120250414Spaincentral: "gpt-4.1-2025-04-14:spaincentral",
Gpt41Mini20250414Westus: "gpt-4.1-mini-2025-04-14:westus",
Gpt41Mini20250414Eastus2: "gpt-4.1-mini-2025-04-14:eastus2",
Gpt41Mini20250414Eastus: "gpt-4.1-mini-2025-04-14:eastus",
Gpt41Mini20250414Westus3: "gpt-4.1-mini-2025-04-14:westus3",
Gpt41Mini20250414Northcentralus: "gpt-4.1-mini-2025-04-14:northcentralus",
Gpt41Mini20250414Southcentralus: "gpt-4.1-mini-2025-04-14:southcentralus",
+ Gpt41Mini20250414Westeurope: "gpt-4.1-mini-2025-04-14:westeurope",
+ Gpt41Mini20250414Germanywestcentral: "gpt-4.1-mini-2025-04-14:germanywestcentral",
+ Gpt41Mini20250414Polandcentral: "gpt-4.1-mini-2025-04-14:polandcentral",
+ Gpt41Mini20250414Spaincentral: "gpt-4.1-mini-2025-04-14:spaincentral",
Gpt41Nano20250414Westus: "gpt-4.1-nano-2025-04-14:westus",
Gpt41Nano20250414Eastus2: "gpt-4.1-nano-2025-04-14:eastus2",
Gpt41Nano20250414Westus3: "gpt-4.1-nano-2025-04-14:westus3",
@@ -63,6 +74,10 @@ export const OpenAiModelFallbackModelsItem = {
Gpt4O20241120Eastus: "gpt-4o-2024-11-20:eastus",
Gpt4O20241120Westus3: "gpt-4o-2024-11-20:westus3",
Gpt4O20241120Southcentralus: "gpt-4o-2024-11-20:southcentralus",
+ Gpt4O20241120Westeurope: "gpt-4o-2024-11-20:westeurope",
+ Gpt4O20241120Germanywestcentral: "gpt-4o-2024-11-20:germanywestcentral",
+ Gpt4O20241120Polandcentral: "gpt-4o-2024-11-20:polandcentral",
+ Gpt4O20241120Spaincentral: "gpt-4o-2024-11-20:spaincentral",
Gpt4O20240806Westus: "gpt-4o-2024-08-06:westus",
Gpt4O20240806Westus3: "gpt-4o-2024-08-06:westus3",
Gpt4O20240806Eastus: "gpt-4o-2024-08-06:eastus",
diff --git a/src/api/types/OpenAiModelModel.ts b/src/api/types/OpenAiModelModel.ts
index 75721c5..be8bc92 100644
--- a/src/api/types/OpenAiModelModel.ts
+++ b/src/api/types/OpenAiModelModel.ts
@@ -9,9 +9,12 @@
* @default undefined
*/
export const OpenAiModelModel = {
+ Gpt52: "gpt-5.2",
+ Gpt52ChatLatest: "gpt-5.2-chat-latest",
Gpt51: "gpt-5.1",
Gpt51ChatLatest: "gpt-5.1-chat-latest",
Gpt5: "gpt-5",
+ Gpt5ChatLatest: "gpt-5-chat-latest",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
Gpt4120250414: "gpt-4.1-2025-04-14",
@@ -54,12 +57,20 @@ export const OpenAiModelModel = {
Gpt4120250414Westus3: "gpt-4.1-2025-04-14:westus3",
Gpt4120250414Northcentralus: "gpt-4.1-2025-04-14:northcentralus",
Gpt4120250414Southcentralus: "gpt-4.1-2025-04-14:southcentralus",
+ Gpt4120250414Westeurope: "gpt-4.1-2025-04-14:westeurope",
+ Gpt4120250414Germanywestcentral: "gpt-4.1-2025-04-14:germanywestcentral",
+ Gpt4120250414Polandcentral: "gpt-4.1-2025-04-14:polandcentral",
+ Gpt4120250414Spaincentral: "gpt-4.1-2025-04-14:spaincentral",
Gpt41Mini20250414Westus: "gpt-4.1-mini-2025-04-14:westus",
Gpt41Mini20250414Eastus2: "gpt-4.1-mini-2025-04-14:eastus2",
Gpt41Mini20250414Eastus: "gpt-4.1-mini-2025-04-14:eastus",
Gpt41Mini20250414Westus3: "gpt-4.1-mini-2025-04-14:westus3",
Gpt41Mini20250414Northcentralus: "gpt-4.1-mini-2025-04-14:northcentralus",
Gpt41Mini20250414Southcentralus: "gpt-4.1-mini-2025-04-14:southcentralus",
+ Gpt41Mini20250414Westeurope: "gpt-4.1-mini-2025-04-14:westeurope",
+ Gpt41Mini20250414Germanywestcentral: "gpt-4.1-mini-2025-04-14:germanywestcentral",
+ Gpt41Mini20250414Polandcentral: "gpt-4.1-mini-2025-04-14:polandcentral",
+ Gpt41Mini20250414Spaincentral: "gpt-4.1-mini-2025-04-14:spaincentral",
Gpt41Nano20250414Westus: "gpt-4.1-nano-2025-04-14:westus",
Gpt41Nano20250414Eastus2: "gpt-4.1-nano-2025-04-14:eastus2",
Gpt41Nano20250414Westus3: "gpt-4.1-nano-2025-04-14:westus3",
@@ -71,6 +82,10 @@ export const OpenAiModelModel = {
Gpt4O20241120Eastus: "gpt-4o-2024-11-20:eastus",
Gpt4O20241120Westus3: "gpt-4o-2024-11-20:westus3",
Gpt4O20241120Southcentralus: "gpt-4o-2024-11-20:southcentralus",
+ Gpt4O20241120Westeurope: "gpt-4o-2024-11-20:westeurope",
+ Gpt4O20241120Germanywestcentral: "gpt-4o-2024-11-20:germanywestcentral",
+ Gpt4O20241120Polandcentral: "gpt-4o-2024-11-20:polandcentral",
+ Gpt4O20241120Spaincentral: "gpt-4o-2024-11-20:spaincentral",
Gpt4O20240806Westus: "gpt-4o-2024-08-06:westus",
Gpt4O20240806Westus3: "gpt-4o-2024-08-06:westus3",
Gpt4O20240806Eastus: "gpt-4o-2024-08-06:eastus",
diff --git a/src/api/types/OpenAiModelPromptCacheRetention.ts b/src/api/types/OpenAiModelPromptCacheRetention.ts
new file mode 100644
index 0000000..0df8fb1
--- /dev/null
+++ b/src/api/types/OpenAiModelPromptCacheRetention.ts
@@ -0,0 +1,18 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/**
+ * This controls the prompt cache retention policy for models that support extended caching (GPT-4.1, GPT-5 series).
+ *
+ * - `in_memory`: Default behavior, cache retained in GPU memory only
+ * - `24h`: Extended caching, keeps cached prefixes active for up to 24 hours by offloading to GPU-local storage
+ *
+ * Only applies to models: gpt-5.2, gpt-5.1, gpt-5.1-codex, gpt-5.1-codex-mini, gpt-5.1-chat-latest, gpt-5, gpt-5-codex, gpt-4.1
+ *
+ * @default undefined (uses API default which is 'in_memory')
+ */
+export const OpenAiModelPromptCacheRetention = {
+ InMemory: "in_memory",
+ TwentyFourH: "24h",
+} as const;
+export type OpenAiModelPromptCacheRetention =
+ (typeof OpenAiModelPromptCacheRetention)[keyof typeof OpenAiModelPromptCacheRetention];
diff --git a/src/api/types/OpenAiModelToolsItem.ts b/src/api/types/OpenAiModelToolsItem.ts
index d5ceba5..f419f1e 100644
--- a/src/api/types/OpenAiModelToolsItem.ts
+++ b/src/api/types/OpenAiModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type OpenAiModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/OpenRouterModelToolsItem.ts b/src/api/types/OpenRouterModelToolsItem.ts
index 54c484d..aae0ee9 100644
--- a/src/api/types/OpenRouterModelToolsItem.ts
+++ b/src/api/types/OpenRouterModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type OpenRouterModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/OrgChannel.ts b/src/api/types/OrgChannel.ts
index 733c498..713bcd6 100644
--- a/src/api/types/OrgChannel.ts
+++ b/src/api/types/OrgChannel.ts
@@ -2,7 +2,9 @@
/** This is the channel of the org. There is the cluster the API traffic for the org will be directed. */
export const OrgChannel = {
+ Daily: "daily",
Default: "default",
Weekly: "weekly",
+ Intuit: "intuit",
} as const;
export type OrgChannel = (typeof OrgChannel)[keyof typeof OrgChannel];
diff --git a/src/api/types/PerplexityAiModelToolsItem.ts b/src/api/types/PerplexityAiModelToolsItem.ts
index 700cd46..6a0fcf4 100644
--- a/src/api/types/PerplexityAiModelToolsItem.ts
+++ b/src/api/types/PerplexityAiModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type PerplexityAiModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/PublicKeyEncryptionPlan.ts b/src/api/types/PublicKeyEncryptionPlan.ts
new file mode 100644
index 0000000..58599eb
--- /dev/null
+++ b/src/api/types/PublicKeyEncryptionPlan.ts
@@ -0,0 +1,10 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface PublicKeyEncryptionPlan {
+ type: "public-key";
+ /** The encryption algorithm to use. */
+ algorithm: Vapi.PublicKeyEncryptionPlanAlgorithm;
+ publicKey: Vapi.SpkiPemPublicKeyConfig;
+}
diff --git a/src/api/types/PublicKeyEncryptionPlanAlgorithm.ts b/src/api/types/PublicKeyEncryptionPlanAlgorithm.ts
new file mode 100644
index 0000000..5ad7451
--- /dev/null
+++ b/src/api/types/PublicKeyEncryptionPlanAlgorithm.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** The encryption algorithm to use. */
+export const PublicKeyEncryptionPlanAlgorithm = {
+ RsaOaep256: "RSA-OAEP-256",
+} as const;
+export type PublicKeyEncryptionPlanAlgorithm =
+ (typeof PublicKeyEncryptionPlanAlgorithm)[keyof typeof PublicKeyEncryptionPlanAlgorithm];
diff --git a/src/api/types/RecordingConsentPlanStayOnLineVoice.ts b/src/api/types/RecordingConsentPlanStayOnLineVoice.ts
index cc5b83f..2a1c79e 100644
--- a/src/api/types/RecordingConsentPlanStayOnLineVoice.ts
+++ b/src/api/types/RecordingConsentPlanStayOnLineVoice.ts
@@ -17,6 +17,7 @@ export type RecordingConsentPlanStayOnLineVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/RecordingConsentPlanVerbalVoice.ts b/src/api/types/RecordingConsentPlanVerbalVoice.ts
index dc58d11..c64441e 100644
--- a/src/api/types/RecordingConsentPlanVerbalVoice.ts
+++ b/src/api/types/RecordingConsentPlanVerbalVoice.ts
@@ -17,6 +17,7 @@ export type RecordingConsentPlanVerbalVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/Server.ts b/src/api/types/Server.ts
index ebb9966..5124865 100644
--- a/src/api/types/Server.ts
+++ b/src/api/types/Server.ts
@@ -17,6 +17,8 @@ export interface Server {
* @default false
*/
staticIpAddressesEnabled?: boolean;
+ /** This is the paths to encrypt in the request body if credentialId and encryptionPlan are defined. */
+ encryptedPaths?: string[];
/** This is where the request will be sent. */
url?: string;
/**
diff --git a/src/api/types/ServerMessageEndOfCallReportEndedReason.ts b/src/api/types/ServerMessageEndOfCallReportEndedReason.ts
index fcd0831..c83309a 100644
--- a/src/api/types/ServerMessageEndOfCallReportEndedReason.ts
+++ b/src/api/types/ServerMessageEndOfCallReportEndedReason.ts
@@ -45,6 +45,7 @@ export const ServerMessageEndOfCallReportEndedReason = {
PipelineErrorSesameVoiceFailed: "pipeline-error-sesame-voice-failed",
PipelineErrorInworldVoiceFailed: "pipeline-error-inworld-voice-failed",
PipelineErrorMinimaxVoiceFailed: "pipeline-error-minimax-voice-failed",
+ PipelineErrorWellsaidVoiceFailed: "pipeline-error-wellsaid-voice-failed",
PipelineErrorTavusVideoFailed: "pipeline-error-tavus-video-failed",
CallInProgressErrorVapifaultOpenaiVoiceFailed: "call.in-progress.error-vapifault-openai-voice-failed",
CallInProgressErrorVapifaultCartesiaVoiceFailed: "call.in-progress.error-vapifault-cartesia-voice-failed",
@@ -61,6 +62,7 @@ export const ServerMessageEndOfCallReportEndedReason = {
CallInProgressErrorVapifaultSesameVoiceFailed: "call.in-progress.error-vapifault-sesame-voice-failed",
CallInProgressErrorVapifaultInworldVoiceFailed: "call.in-progress.error-vapifault-inworld-voice-failed",
CallInProgressErrorVapifaultMinimaxVoiceFailed: "call.in-progress.error-vapifault-minimax-voice-failed",
+ CallInProgressErrorVapifaultWellsaidVoiceFailed: "call.in-progress.error-vapifault-wellsaid-voice-failed",
CallInProgressErrorVapifaultTavusVideoFailed: "call.in-progress.error-vapifault-tavus-video-failed",
PipelineErrorVapiLlmFailed: "pipeline-error-vapi-llm-failed",
PipelineErrorVapi400BadRequestValidationFailed: "pipeline-error-vapi-400-bad-request-validation-failed",
diff --git a/src/api/types/ServerMessageStatusUpdateEndedReason.ts b/src/api/types/ServerMessageStatusUpdateEndedReason.ts
index 7413a69..b1c2feb 100644
--- a/src/api/types/ServerMessageStatusUpdateEndedReason.ts
+++ b/src/api/types/ServerMessageStatusUpdateEndedReason.ts
@@ -45,6 +45,7 @@ export const ServerMessageStatusUpdateEndedReason = {
PipelineErrorSesameVoiceFailed: "pipeline-error-sesame-voice-failed",
PipelineErrorInworldVoiceFailed: "pipeline-error-inworld-voice-failed",
PipelineErrorMinimaxVoiceFailed: "pipeline-error-minimax-voice-failed",
+ PipelineErrorWellsaidVoiceFailed: "pipeline-error-wellsaid-voice-failed",
PipelineErrorTavusVideoFailed: "pipeline-error-tavus-video-failed",
CallInProgressErrorVapifaultOpenaiVoiceFailed: "call.in-progress.error-vapifault-openai-voice-failed",
CallInProgressErrorVapifaultCartesiaVoiceFailed: "call.in-progress.error-vapifault-cartesia-voice-failed",
@@ -61,6 +62,7 @@ export const ServerMessageStatusUpdateEndedReason = {
CallInProgressErrorVapifaultSesameVoiceFailed: "call.in-progress.error-vapifault-sesame-voice-failed",
CallInProgressErrorVapifaultInworldVoiceFailed: "call.in-progress.error-vapifault-inworld-voice-failed",
CallInProgressErrorVapifaultMinimaxVoiceFailed: "call.in-progress.error-vapifault-minimax-voice-failed",
+ CallInProgressErrorVapifaultWellsaidVoiceFailed: "call.in-progress.error-vapifault-wellsaid-voice-failed",
CallInProgressErrorVapifaultTavusVideoFailed: "call.in-progress.error-vapifault-tavus-video-failed",
PipelineErrorVapiLlmFailed: "pipeline-error-vapi-llm-failed",
PipelineErrorVapi400BadRequestValidationFailed: "pipeline-error-vapi-400-bad-request-validation-failed",
diff --git a/src/api/types/SpeechmaticsTranscriber.ts b/src/api/types/SpeechmaticsTranscriber.ts
index 355d4de..51b9753 100644
--- a/src/api/types/SpeechmaticsTranscriber.ts
+++ b/src/api/types/SpeechmaticsTranscriber.ts
@@ -26,20 +26,6 @@ export interface SpeechmaticsTranscriber {
* @default false
*/
enableDiarization?: boolean;
- /**
- * This sets the maximum number of speakers to detect when diarization is enabled. Only used when enableDiarization is true.
- *
- * @default 2
- */
- maxSpeakers?: number;
- /** Provides friendly speaker labels that map to diarization indices (Speaker 1 -> labels[0]). */
- speakerLabels?: string[];
- /**
- * This enables partial transcripts during speech recognition. When false, only final transcripts are returned.
- *
- * @default true
- */
- enablePartials?: boolean;
/**
* This sets the maximum delay in milliseconds for partial transcripts. Balances latency and accuracy.
*
@@ -48,29 +34,11 @@ export interface SpeechmaticsTranscriber {
maxDelay?: number;
customVocabulary: Vapi.SpeechmaticsCustomVocabularyItem[];
/**
- * This controls how numbers are formatted in the transcription output.
+ * This controls how numbers, dates, currencies, and other entities are formatted in the transcription output.
*
* @default 'written'
*/
numeralStyle?: Vapi.SpeechmaticsTranscriberNumeralStyle;
- /**
- * This enables detection of non-speech audio events like music, applause, and laughter.
- *
- * @default false
- */
- enableEntities?: boolean;
- /**
- * This enables automatic punctuation in the transcription output.
- *
- * @default true
- */
- enablePunctuation?: boolean;
- /**
- * This enables automatic capitalization in the transcription output.
- *
- * @default true
- */
- enableCapitalization?: boolean;
/**
* This is the sensitivity level for end-of-turn detection, which determines when a speaker has finished talking. Higher values are more sensitive.
*
@@ -80,6 +48,8 @@ export interface SpeechmaticsTranscriber {
/**
* This enables removal of disfluencies (um, uh) from the transcript to create cleaner, more professional output.
*
+ * This is only supported for the English language transcriber.
+ *
* @default false
*/
removeDisfluencies?: boolean;
diff --git a/src/api/types/SpeechmaticsTranscriberLanguage.ts b/src/api/types/SpeechmaticsTranscriberLanguage.ts
index b451528..15071d4 100644
--- a/src/api/types/SpeechmaticsTranscriberLanguage.ts
+++ b/src/api/types/SpeechmaticsTranscriberLanguage.ts
@@ -34,8 +34,10 @@ export const SpeechmaticsTranscriberLanguage = {
Lv: "lv",
Lt: "lt",
Ms: "ms",
+ EnMs: "en_ms",
Mt: "mt",
Cmn: "cmn",
+ CmnEn: "cmn_en",
Mr: "mr",
Mn: "mn",
No: "no",
@@ -47,9 +49,12 @@ export const SpeechmaticsTranscriberLanguage = {
Sk: "sk",
Sl: "sl",
Es: "es",
+ EnEs: "en_es",
Sw: "sw",
Sv: "sv",
+ Tl: "tl",
Ta: "ta",
+ EnTa: "en_ta",
Th: "th",
Tr: "tr",
Uk: "uk",
diff --git a/src/api/types/SpeechmaticsTranscriberNumeralStyle.ts b/src/api/types/SpeechmaticsTranscriberNumeralStyle.ts
index 1c9e27a..394f4de 100644
--- a/src/api/types/SpeechmaticsTranscriberNumeralStyle.ts
+++ b/src/api/types/SpeechmaticsTranscriberNumeralStyle.ts
@@ -1,7 +1,7 @@
// This file was auto-generated by Fern from our API Definition.
/**
- * This controls how numbers are formatted in the transcription output.
+ * This controls how numbers, dates, currencies, and other entities are formatted in the transcription output.
*
* @default 'written'
*/
diff --git a/src/api/types/SpkiPemPublicKeyConfig.ts b/src/api/types/SpkiPemPublicKeyConfig.ts
new file mode 100644
index 0000000..dc73973
--- /dev/null
+++ b/src/api/types/SpkiPemPublicKeyConfig.ts
@@ -0,0 +1,9 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export interface SpkiPemPublicKeyConfig {
+ /** Optional name of the key for identification purposes. */
+ name?: string;
+ format: "spki-pem";
+ /** The PEM-encoded public key. */
+ pem: string;
+}
diff --git a/src/api/types/SyncVoiceLibraryDtoProvidersItem.ts b/src/api/types/SyncVoiceLibraryDtoProvidersItem.ts
index dad306f..f548aeb 100644
--- a/src/api/types/SyncVoiceLibraryDtoProvidersItem.ts
+++ b/src/api/types/SyncVoiceLibraryDtoProvidersItem.ts
@@ -18,6 +18,7 @@ export const SyncVoiceLibraryDtoProvidersItem = {
Sesame: "sesame",
Inworld: "inworld",
Minimax: "minimax",
+ Wellsaid: "wellsaid",
Orpheus: "orpheus",
} as const;
export type SyncVoiceLibraryDtoProvidersItem =
diff --git a/src/api/types/TemplateDetails.ts b/src/api/types/TemplateDetails.ts
index 2efca96..5b18363 100644
--- a/src/api/types/TemplateDetails.ts
+++ b/src/api/types/TemplateDetails.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type TemplateDetails =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/TogetherAiModelToolsItem.ts b/src/api/types/TogetherAiModelToolsItem.ts
index 1f0522b..df18ab1 100644
--- a/src/api/types/TogetherAiModelToolsItem.ts
+++ b/src/api/types/TogetherAiModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type TogetherAiModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/Token.ts b/src/api/types/Token.ts
index 0e2d7e1..604096c 100644
--- a/src/api/types/Token.ts
+++ b/src/api/types/Token.ts
@@ -14,7 +14,7 @@ export interface Token {
/** This is the ISO 8601 date-time string of when the token was last updated. */
updatedAt: string;
/** This is the token key. */
- value: string;
+ value?: string;
/** This is the name of the token. This is just for your own reference. */
name?: string;
/** This are the restrictions for the token. */
diff --git a/src/api/types/ToolCallHookActionTool.ts b/src/api/types/ToolCallHookActionTool.ts
index c9b3811..4b3dbe6 100644
--- a/src/api/types/ToolCallHookActionTool.ts
+++ b/src/api/types/ToolCallHookActionTool.ts
@@ -8,6 +8,7 @@ import type * as Vapi from "../index.js";
export type ToolCallHookActionTool =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/ToolNodeTool.ts b/src/api/types/ToolNodeTool.ts
index bcd382d..b21e98b 100644
--- a/src/api/types/ToolNodeTool.ts
+++ b/src/api/types/ToolNodeTool.ts
@@ -8,6 +8,7 @@ import type * as Vapi from "../index.js";
export type ToolNodeTool =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/TransferAssistant.ts b/src/api/types/TransferAssistant.ts
index eeabf68..c401a05 100644
--- a/src/api/types/TransferAssistant.ts
+++ b/src/api/types/TransferAssistant.ts
@@ -23,6 +23,14 @@ export interface TransferAssistant {
* You can also provide a custom sound by providing a URL to an audio file.
*/
backgroundSound?: Vapi.TransferAssistantBackgroundSound;
+ /**
+ * This is the plan for when the transfer assistant should start talking.
+ *
+ * You should configure this if the transfer assistant needs different endpointing behavior than the base assistant.
+ *
+ * If this is not set, the transfer assistant will inherit the start speaking plan from the base assistant.
+ */
+ startSpeakingPlan?: Vapi.StartSpeakingPlan;
/**
* This is the mode for the first message. Default is 'assistant-speaks-first'.
*
diff --git a/src/api/types/TransferAssistantVoice.ts b/src/api/types/TransferAssistantVoice.ts
index c53117e..5ef561b 100644
--- a/src/api/types/TransferAssistantVoice.ts
+++ b/src/api/types/TransferAssistantVoice.ts
@@ -16,6 +16,7 @@ export type TransferAssistantVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/TransferDestinationNumber.ts b/src/api/types/TransferDestinationNumber.ts
index 14da289..36d37bd 100644
--- a/src/api/types/TransferDestinationNumber.ts
+++ b/src/api/types/TransferDestinationNumber.ts
@@ -34,7 +34,9 @@ export interface TransferDestinationNumber {
* This is the caller ID to use when transferring the call to the `number`.
*
* Usage:
- * - If not provided, the caller ID will be the number the call is coming from. Example, +14151111111 calls in to and the assistant transfers out to +16470000000. +16470000000 will see +14151111111 as the caller.
+ * - If not provided, the caller ID will be the number the call is coming **from**.
+ * Example: a customer with number +14151111111 calls in to and the assistant transfers out to +16470000000. +16470000000 will see +14151111111 as the caller.
+ * For inbound calls, the caller ID is the customer's number. For outbound calls, the caller ID is the phone number of the assistant.
* - To change this behavior, provide a `callerId`.
* - Set to '{{customer.number}}' to always use the customer's number as the caller ID.
* - Set to '{{phoneNumber.number}}' to always use the phone number of the assistant as the caller ID.
diff --git a/src/api/types/UpdateApiRequestToolDto.ts b/src/api/types/UpdateApiRequestToolDto.ts
index 5fd34b5..ce6d05c 100644
--- a/src/api/types/UpdateApiRequestToolDto.ts
+++ b/src/api/types/UpdateApiRequestToolDto.ts
@@ -18,6 +18,8 @@ export interface UpdateApiRequestToolDto {
timeoutSeconds?: number;
/** The credential ID for API request authentication */
credentialId?: string;
+ /** This is the paths to encrypt in the request body if credentialId and encryptionPlan are defined. */
+ encryptedPaths?: string[];
/**
* This is the plan to reject a tool call based on the conversation state.
*
diff --git a/src/api/types/UpdateAzureCredentialDtoRegion.ts b/src/api/types/UpdateAzureCredentialDtoRegion.ts
index 469c9ec..548030e 100644
--- a/src/api/types/UpdateAzureCredentialDtoRegion.ts
+++ b/src/api/types/UpdateAzureCredentialDtoRegion.ts
@@ -8,16 +8,20 @@ export const UpdateAzureCredentialDtoRegion = {
Eastus2: "eastus2",
Eastus: "eastus",
France: "france",
+ Germanywestcentral: "germanywestcentral",
India: "india",
Japaneast: "japaneast",
Japanwest: "japanwest",
- Uaenorth: "uaenorth",
Northcentralus: "northcentralus",
Norway: "norway",
+ Polandcentral: "polandcentral",
Southcentralus: "southcentralus",
+ Spaincentral: "spaincentral",
Swedencentral: "swedencentral",
Switzerland: "switzerland",
+ Uaenorth: "uaenorth",
Uk: "uk",
+ Westeurope: "westeurope",
Westus: "westus",
Westus3: "westus3",
} as const;
diff --git a/src/api/types/UpdateAzureOpenAiCredentialDtoModelsItem.ts b/src/api/types/UpdateAzureOpenAiCredentialDtoModelsItem.ts
index 9305c83..106e94e 100644
--- a/src/api/types/UpdateAzureOpenAiCredentialDtoModelsItem.ts
+++ b/src/api/types/UpdateAzureOpenAiCredentialDtoModelsItem.ts
@@ -1,6 +1,10 @@
// This file was auto-generated by Fern from our API Definition.
export const UpdateAzureOpenAiCredentialDtoModelsItem = {
+ Gpt52: "gpt-5.2",
+ Gpt52Chat: "gpt-5.2-chat",
+ Gpt51: "gpt-5.1",
+ Gpt51Chat: "gpt-5.1-chat",
Gpt5: "gpt-5",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
diff --git a/src/api/types/UpdateAzureOpenAiCredentialDtoRegion.ts b/src/api/types/UpdateAzureOpenAiCredentialDtoRegion.ts
index 590c4e6..b9d7cdf 100644
--- a/src/api/types/UpdateAzureOpenAiCredentialDtoRegion.ts
+++ b/src/api/types/UpdateAzureOpenAiCredentialDtoRegion.ts
@@ -7,16 +7,20 @@ export const UpdateAzureOpenAiCredentialDtoRegion = {
Eastus2: "eastus2",
Eastus: "eastus",
France: "france",
+ Germanywestcentral: "germanywestcentral",
India: "india",
Japaneast: "japaneast",
Japanwest: "japanwest",
- Uaenorth: "uaenorth",
Northcentralus: "northcentralus",
Norway: "norway",
+ Polandcentral: "polandcentral",
Southcentralus: "southcentralus",
+ Spaincentral: "spaincentral",
Swedencentral: "swedencentral",
Switzerland: "switzerland",
+ Uaenorth: "uaenorth",
Uk: "uk",
+ Westeurope: "westeurope",
Westus: "westus",
Westus3: "westus3",
} as const;
diff --git a/src/api/types/UpdateCodeToolDto.ts b/src/api/types/UpdateCodeToolDto.ts
new file mode 100644
index 0000000..d6efb06
--- /dev/null
+++ b/src/api/types/UpdateCodeToolDto.ts
@@ -0,0 +1,136 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface UpdateCodeToolDto {
+ /**
+ * These are the messages that will be spoken to the user as the tool is running.
+ *
+ * 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.
+ */
+ messages?: Vapi.UpdateCodeToolDtoMessagesItem[];
+ /**
+ * This determines if the tool is async.
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * Defaults to synchronous (`false`).
+ */
+ async?: boolean;
+ /**
+ * This is the server where a `tool-calls` webhook will be sent.
+ *
+ * Notes:
+ * - Webhook is sent to this server when a tool call is made.
+ * - Webhook contains the call, assistant, and phone number objects.
+ * - Webhook contains the variables set on the assistant.
+ * - Webhook is sent to the first available URL in this order: {{tool.server.url}}, {{assistant.server.url}}, {{phoneNumber.server.url}}, {{org.server.url}}.
+ * - Webhook expects a response with tool call result.
+ */
+ server?: Vapi.Server;
+ /** TypeScript code to execute when the tool is called */
+ code?: string;
+ /** Environment variables available in code via `env` object */
+ environmentVariables?: Vapi.CodeToolEnvironmentVariable[];
+ /**
+ * This is the timeout in seconds for the code execution. Defaults to 10 seconds.
+ * Maximum is 30 seconds to prevent abuse.
+ *
+ * @default 10
+ */
+ timeoutSeconds?: number;
+ /** Credential ID containing the Val Town API key */
+ credentialId?: string;
+ /** Plan to extract variables from the tool response */
+ variableExtractionPlan?: Vapi.VariableExtractionPlan;
+ /**
+ * This is the plan to reject a tool call based on the conversation state.
+ *
+ * // Example 1: Reject endCall if user didn't say goodbye
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'regex',
+ * regex: '(?i)\\b(bye|goodbye|farewell|see you later|take care)\\b',
+ * target: { position: -1, role: 'user' },
+ * negate: true // Reject if pattern does NOT match
+ * }]
+ * }
+ * ```
+ *
+ * // Example 2: Reject transfer if user is actually asking a question
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'regex',
+ * regex: '\\?',
+ * target: { position: -1, role: 'user' }
+ * }]
+ * }
+ * ```
+ *
+ * // Example 3: Reject transfer if user didn't mention transfer recently
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'liquid',
+ * liquid: `{% assign recentMessages = messages | last: 5 %}
+ * {% assign userMessages = recentMessages | where: 'role', 'user' %}
+ * {% assign mentioned = false %}
+ * {% for msg in userMessages %}
+ * {% if msg.content contains 'transfer' or msg.content contains 'connect' or msg.content contains 'speak to' %}
+ * {% assign mentioned = true %}
+ * {% break %}
+ * {% endif %}
+ * {% endfor %}
+ * {% if mentioned %}
+ * false
+ * {% else %}
+ * true
+ * {% endif %}`
+ * }]
+ * }
+ * ```
+ *
+ * // Example 4: Reject endCall if the bot is looping and trying to exit
+ * ```json
+ * {
+ * conditions: [{
+ * type: 'liquid',
+ * liquid: `{% assign recentMessages = messages | last: 6 %}
+ * {% assign userMessages = recentMessages | where: 'role', 'user' | reverse %}
+ * {% if userMessages.size < 3 %}
+ * false
+ * {% else %}
+ * {% assign msg1 = userMessages[0].content | downcase %}
+ * {% assign msg2 = userMessages[1].content | downcase %}
+ * {% assign msg3 = userMessages[2].content | downcase %}
+ * {% comment %} Check for repetitive messages {% endcomment %}
+ * {% if msg1 == msg2 or msg1 == msg3 or msg2 == msg3 %}
+ * true
+ * {% comment %} Check for common loop phrases {% endcomment %}
+ * {% elsif msg1 contains 'cool thanks' or msg2 contains 'cool thanks' or msg3 contains 'cool thanks' %}
+ * true
+ * {% elsif msg1 contains 'okay thanks' or msg2 contains 'okay thanks' or msg3 contains 'okay thanks' %}
+ * true
+ * {% elsif msg1 contains 'got it' or msg2 contains 'got it' or msg3 contains 'got it' %}
+ * true
+ * {% else %}
+ * false
+ * {% endif %}
+ * {% endif %}`
+ * }]
+ * }
+ * ```
+ */
+ rejectionPlan?: Vapi.ToolRejectionPlan;
+ /**
+ * This is the function definition of the tool.
+ *
+ * For the Code tool, this defines the name, description, and parameters that the model
+ * will use to understand when and how to call this tool.
+ */
+ function?: Vapi.OpenAiFunction;
+}
diff --git a/src/api/types/UpdateCodeToolDtoMessagesItem.ts b/src/api/types/UpdateCodeToolDtoMessagesItem.ts
new file mode 100644
index 0000000..eb86a0c
--- /dev/null
+++ b/src/api/types/UpdateCodeToolDtoMessagesItem.ts
@@ -0,0 +1,9 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export type UpdateCodeToolDtoMessagesItem =
+ | Vapi.ToolMessageStart
+ | Vapi.ToolMessageComplete
+ | Vapi.ToolMessageFailed
+ | Vapi.ToolMessageDelayed;
diff --git a/src/api/types/UpdateCustomCredentialDto.ts b/src/api/types/UpdateCustomCredentialDto.ts
index e9d4ac5..05c5af3 100644
--- a/src/api/types/UpdateCustomCredentialDto.ts
+++ b/src/api/types/UpdateCustomCredentialDto.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export interface UpdateCustomCredentialDto {
/** This is the authentication plan. Supports OAuth2 RFC 6749, HMAC signing, and Bearer authentication. */
authenticationPlan?: Vapi.UpdateCustomCredentialDtoAuthenticationPlan;
+ encryptionPlan: Vapi.PublicKeyEncryptionPlan;
/** This is the name of credential. This is just for your reference. */
name?: string;
}
diff --git a/src/api/types/UpdateOrgDtoChannel.ts b/src/api/types/UpdateOrgDtoChannel.ts
index aadfbcb..af8b816 100644
--- a/src/api/types/UpdateOrgDtoChannel.ts
+++ b/src/api/types/UpdateOrgDtoChannel.ts
@@ -2,7 +2,9 @@
/** This is the channel of the org. There is the cluster the API traffic for the org will be directed. */
export const UpdateOrgDtoChannel = {
+ Daily: "daily",
Default: "default",
Weekly: "weekly",
+ Intuit: "intuit",
} as const;
export type UpdateOrgDtoChannel = (typeof UpdateOrgDtoChannel)[keyof typeof UpdateOrgDtoChannel];
diff --git a/src/api/types/UpdateSpeechmaticsCredentialDto.ts b/src/api/types/UpdateSpeechmaticsCredentialDto.ts
deleted file mode 100644
index 2282b0b..0000000
--- a/src/api/types/UpdateSpeechmaticsCredentialDto.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file was auto-generated by Fern from our API Definition.
-
-export interface UpdateSpeechmaticsCredentialDto {
- /** This is not returned in the API. */
- apiKey?: string;
- /** This is the name of credential. This is just for your reference. */
- name?: string;
-}
diff --git a/src/api/types/UpdateSupabaseCredentialDto.ts b/src/api/types/UpdateSupabaseCredentialDto.ts
deleted file mode 100644
index 7eddb01..0000000
--- a/src/api/types/UpdateSupabaseCredentialDto.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file was auto-generated by Fern from our API Definition.
-
-import type * as Vapi from "../index.js";
-
-export interface UpdateSupabaseCredentialDto {
- /** This is the order in which this storage provider is tried during upload retries. Lower numbers are tried first in increasing order. */
- fallbackIndex?: number;
- /** This is the name of credential. This is just for your reference. */
- name?: string;
- bucketPlan?: Vapi.SupabaseBucketPlan;
-}
diff --git a/src/api/types/UpdateToolTemplateDtoDetails.ts b/src/api/types/UpdateToolTemplateDtoDetails.ts
index f723fbe..f810383 100644
--- a/src/api/types/UpdateToolTemplateDtoDetails.ts
+++ b/src/api/types/UpdateToolTemplateDtoDetails.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type UpdateToolTemplateDtoDetails =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/UpdateTavusCredentialDto.ts b/src/api/types/UpdateWellSaidCredentialDto.ts
similarity index 82%
rename from src/api/types/UpdateTavusCredentialDto.ts
rename to src/api/types/UpdateWellSaidCredentialDto.ts
index 486c0fe..2cdbc69 100644
--- a/src/api/types/UpdateTavusCredentialDto.ts
+++ b/src/api/types/UpdateWellSaidCredentialDto.ts
@@ -1,6 +1,6 @@
// This file was auto-generated by Fern from our API Definition.
-export interface UpdateTavusCredentialDto {
+export interface UpdateWellSaidCredentialDto {
/** This is not returned in the API. */
apiKey?: string;
/** This is the name of credential. This is just for your reference. */
diff --git a/src/api/types/UpdateWorkflowDtoCredentialsItem.ts b/src/api/types/UpdateWorkflowDtoCredentialsItem.ts
index e1b7430..1729b24 100644
--- a/src/api/types/UpdateWorkflowDtoCredentialsItem.ts
+++ b/src/api/types/UpdateWorkflowDtoCredentialsItem.ts
@@ -53,4 +53,5 @@ export type UpdateWorkflowDtoCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/UpdateWorkflowDtoVoice.ts b/src/api/types/UpdateWorkflowDtoVoice.ts
index 93538fc..ca8b623 100644
--- a/src/api/types/UpdateWorkflowDtoVoice.ts
+++ b/src/api/types/UpdateWorkflowDtoVoice.ts
@@ -18,6 +18,7 @@ export type UpdateWorkflowDtoVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/UserMessage.ts b/src/api/types/UserMessage.ts
index 18b4843..9891497 100644
--- a/src/api/types/UserMessage.ts
+++ b/src/api/types/UserMessage.ts
@@ -21,4 +21,6 @@ export interface UserMessage {
originalMessage?: string;
/** The metadata associated with the message. Currently used to store the transcriber's word level confidence. */
metadata?: Record;
+ /** Stable speaker label for diarized user speakers (e.g., "Speaker 1"). */
+ speakerLabel?: string;
}
diff --git a/src/api/types/VapiModelToolsItem.ts b/src/api/types/VapiModelToolsItem.ts
index d95300f..b3b06f9 100644
--- a/src/api/types/VapiModelToolsItem.ts
+++ b/src/api/types/VapiModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type VapiModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/VapiVoiceVoiceId.ts b/src/api/types/VapiVoiceVoiceId.ts
index c437386..f34fb5a 100644
--- a/src/api/types/VapiVoiceVoiceId.ts
+++ b/src/api/types/VapiVoiceVoiceId.ts
@@ -15,5 +15,11 @@ export const VapiVoiceVoiceId = {
Spencer: "Spencer",
Leah: "Leah",
Tara: "Tara",
+ Jess: "Jess",
+ Leo: "Leo",
+ Dan: "Dan",
+ Mia: "Mia",
+ Zac: "Zac",
+ Zoe: "Zoe",
} as const;
export type VapiVoiceVoiceId = (typeof VapiVoiceVoiceId)[keyof typeof VapiVoiceVoiceId];
diff --git a/src/api/types/WellSaidCredential.ts b/src/api/types/WellSaidCredential.ts
new file mode 100644
index 0000000..3d29b64
--- /dev/null
+++ b/src/api/types/WellSaidCredential.ts
@@ -0,0 +1,19 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface WellSaidCredential {
+ provider: Vapi.WellSaidCredentialProvider;
+ /** This is not returned in the API. */
+ apiKey: string;
+ /** This is the unique identifier for the credential. */
+ id: string;
+ /** This is the unique identifier for the org that this credential belongs to. */
+ orgId: string;
+ /** This is the ISO 8601 date-time string of when the credential was created. */
+ createdAt: string;
+ /** This is the ISO 8601 date-time string of when the assistant was last updated. */
+ updatedAt: string;
+ /** This is the name of credential. This is just for your reference. */
+ name?: string;
+}
diff --git a/src/api/types/WellSaidCredentialProvider.ts b/src/api/types/WellSaidCredentialProvider.ts
new file mode 100644
index 0000000..3a23110
--- /dev/null
+++ b/src/api/types/WellSaidCredentialProvider.ts
@@ -0,0 +1,6 @@
+// This file was auto-generated by Fern from our API Definition.
+
+export const WellSaidCredentialProvider = {
+ Wellsaid: "wellsaid",
+} as const;
+export type WellSaidCredentialProvider = (typeof WellSaidCredentialProvider)[keyof typeof WellSaidCredentialProvider];
diff --git a/src/api/types/WellSaidVoice.ts b/src/api/types/WellSaidVoice.ts
new file mode 100644
index 0000000..8cbff45
--- /dev/null
+++ b/src/api/types/WellSaidVoice.ts
@@ -0,0 +1,22 @@
+// This file was auto-generated by Fern from our API Definition.
+
+import type * as Vapi from "../index.js";
+
+export interface WellSaidVoice {
+ /** This is the flag to toggle voice caching for the assistant. */
+ cachingEnabled?: boolean;
+ /** This is the voice provider that will be used. */
+ provider: Vapi.WellSaidVoiceProvider;
+ /** The WellSaid speaker ID to synthesize. */
+ voiceId: string;
+ /** This is the model that will be used. */
+ model?: Vapi.WellSaidVoiceModel;
+ /** Enables limited SSML translation for input text. */
+ enableSsml?: boolean;
+ /** Array of library IDs to use for voice synthesis. */
+ libraryIds?: string[];
+ /** This is the plan for chunking the model output before it is sent to the voice provider. */
+ chunkPlan?: Vapi.ChunkPlan;
+ /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */
+ fallbackPlan?: Vapi.FallbackPlan;
+}
diff --git a/src/api/types/WellSaidVoiceModel.ts b/src/api/types/WellSaidVoiceModel.ts
new file mode 100644
index 0000000..e7a992b
--- /dev/null
+++ b/src/api/types/WellSaidVoiceModel.ts
@@ -0,0 +1,8 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** This is the model that will be used. */
+export const WellSaidVoiceModel = {
+ Caruso: "caruso",
+ Legacy: "legacy",
+} as const;
+export type WellSaidVoiceModel = (typeof WellSaidVoiceModel)[keyof typeof WellSaidVoiceModel];
diff --git a/src/api/types/WellSaidVoiceProvider.ts b/src/api/types/WellSaidVoiceProvider.ts
new file mode 100644
index 0000000..868a9b7
--- /dev/null
+++ b/src/api/types/WellSaidVoiceProvider.ts
@@ -0,0 +1,7 @@
+// This file was auto-generated by Fern from our API Definition.
+
+/** This is the voice provider that will be used. */
+export const WellSaidVoiceProvider = {
+ Wellsaid: "wellsaid",
+} as const;
+export type WellSaidVoiceProvider = (typeof WellSaidVoiceProvider)[keyof typeof WellSaidVoiceProvider];
diff --git a/src/api/types/WorkflowAnthropicModel.ts b/src/api/types/WorkflowAnthropicModel.ts
index 7151a60..71bffb0 100644
--- a/src/api/types/WorkflowAnthropicModel.ts
+++ b/src/api/types/WorkflowAnthropicModel.ts
@@ -10,7 +10,6 @@ export interface WorkflowAnthropicModel {
/**
* This is the optional configuration for Anthropic's thinking feature.
*
- * - Only applicable for `claude-3-7-sonnet-20250219` model.
* - If provided, `maxTokens` must be greater than `thinking.budgetTokens`.
*/
thinking?: Vapi.AnthropicThinkingConfig;
diff --git a/src/api/types/WorkflowAnthropicModelModel.ts b/src/api/types/WorkflowAnthropicModelModel.ts
index 8da91f0..067eeec 100644
--- a/src/api/types/WorkflowAnthropicModelModel.ts
+++ b/src/api/types/WorkflowAnthropicModelModel.ts
@@ -10,6 +10,7 @@ export const WorkflowAnthropicModelModel = {
Claude35Haiku20241022: "claude-3-5-haiku-20241022",
Claude37Sonnet20250219: "claude-3-7-sonnet-20250219",
ClaudeOpus420250514: "claude-opus-4-20250514",
+ ClaudeOpus4520251101: "claude-opus-4-5-20251101",
ClaudeSonnet420250514: "claude-sonnet-4-20250514",
ClaudeSonnet4520250929: "claude-sonnet-4-5-20250929",
ClaudeHaiku4520251001: "claude-haiku-4-5-20251001",
diff --git a/src/api/types/WorkflowCredentialsItem.ts b/src/api/types/WorkflowCredentialsItem.ts
index 76db780..0948f40 100644
--- a/src/api/types/WorkflowCredentialsItem.ts
+++ b/src/api/types/WorkflowCredentialsItem.ts
@@ -53,4 +53,5 @@ export type WorkflowCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/WorkflowOpenAiModelModel.ts b/src/api/types/WorkflowOpenAiModelModel.ts
index 4004665..f8d2a57 100644
--- a/src/api/types/WorkflowOpenAiModelModel.ts
+++ b/src/api/types/WorkflowOpenAiModelModel.ts
@@ -7,9 +7,12 @@
* This is helpful when you are required to comply with Data Residency rules. Learn more about Azure regions here https://azure.microsoft.com/en-us/explore/global-infrastructure/data-residency/.
*/
export const WorkflowOpenAiModelModel = {
+ Gpt52: "gpt-5.2",
+ Gpt52ChatLatest: "gpt-5.2-chat-latest",
Gpt51: "gpt-5.1",
Gpt51ChatLatest: "gpt-5.1-chat-latest",
Gpt5: "gpt-5",
+ Gpt5ChatLatest: "gpt-5-chat-latest",
Gpt5Mini: "gpt-5-mini",
Gpt5Nano: "gpt-5-nano",
Gpt4120250414: "gpt-4.1-2025-04-14",
@@ -48,12 +51,20 @@ export const WorkflowOpenAiModelModel = {
Gpt4120250414Westus3: "gpt-4.1-2025-04-14:westus3",
Gpt4120250414Northcentralus: "gpt-4.1-2025-04-14:northcentralus",
Gpt4120250414Southcentralus: "gpt-4.1-2025-04-14:southcentralus",
+ Gpt4120250414Westeurope: "gpt-4.1-2025-04-14:westeurope",
+ Gpt4120250414Germanywestcentral: "gpt-4.1-2025-04-14:germanywestcentral",
+ Gpt4120250414Polandcentral: "gpt-4.1-2025-04-14:polandcentral",
+ Gpt4120250414Spaincentral: "gpt-4.1-2025-04-14:spaincentral",
Gpt41Mini20250414Westus: "gpt-4.1-mini-2025-04-14:westus",
Gpt41Mini20250414Eastus2: "gpt-4.1-mini-2025-04-14:eastus2",
Gpt41Mini20250414Eastus: "gpt-4.1-mini-2025-04-14:eastus",
Gpt41Mini20250414Westus3: "gpt-4.1-mini-2025-04-14:westus3",
Gpt41Mini20250414Northcentralus: "gpt-4.1-mini-2025-04-14:northcentralus",
Gpt41Mini20250414Southcentralus: "gpt-4.1-mini-2025-04-14:southcentralus",
+ Gpt41Mini20250414Westeurope: "gpt-4.1-mini-2025-04-14:westeurope",
+ Gpt41Mini20250414Germanywestcentral: "gpt-4.1-mini-2025-04-14:germanywestcentral",
+ Gpt41Mini20250414Polandcentral: "gpt-4.1-mini-2025-04-14:polandcentral",
+ Gpt41Mini20250414Spaincentral: "gpt-4.1-mini-2025-04-14:spaincentral",
Gpt41Nano20250414Westus: "gpt-4.1-nano-2025-04-14:westus",
Gpt41Nano20250414Eastus2: "gpt-4.1-nano-2025-04-14:eastus2",
Gpt41Nano20250414Westus3: "gpt-4.1-nano-2025-04-14:westus3",
@@ -65,6 +76,10 @@ export const WorkflowOpenAiModelModel = {
Gpt4O20241120Eastus: "gpt-4o-2024-11-20:eastus",
Gpt4O20241120Westus3: "gpt-4o-2024-11-20:westus3",
Gpt4O20241120Southcentralus: "gpt-4o-2024-11-20:southcentralus",
+ Gpt4O20241120Westeurope: "gpt-4o-2024-11-20:westeurope",
+ Gpt4O20241120Germanywestcentral: "gpt-4o-2024-11-20:germanywestcentral",
+ Gpt4O20241120Polandcentral: "gpt-4o-2024-11-20:polandcentral",
+ Gpt4O20241120Spaincentral: "gpt-4o-2024-11-20:spaincentral",
Gpt4O20240806Westus: "gpt-4o-2024-08-06:westus",
Gpt4O20240806Westus3: "gpt-4o-2024-08-06:westus3",
Gpt4O20240806Eastus: "gpt-4o-2024-08-06:eastus",
diff --git a/src/api/types/WorkflowUserEditableCredentialsItem.ts b/src/api/types/WorkflowUserEditableCredentialsItem.ts
index 8626cfe..794723e 100644
--- a/src/api/types/WorkflowUserEditableCredentialsItem.ts
+++ b/src/api/types/WorkflowUserEditableCredentialsItem.ts
@@ -53,4 +53,5 @@ export type WorkflowUserEditableCredentialsItem =
| Vapi.CreateSlackOAuth2AuthorizationCredentialDto
| Vapi.CreateGoHighLevelMcpCredentialDto
| Vapi.CreateInworldCredentialDto
- | Vapi.CreateMinimaxCredentialDto;
+ | Vapi.CreateMinimaxCredentialDto
+ | Vapi.CreateWellSaidCredentialDto;
diff --git a/src/api/types/WorkflowUserEditableVoice.ts b/src/api/types/WorkflowUserEditableVoice.ts
index ee156ac..11ccb61 100644
--- a/src/api/types/WorkflowUserEditableVoice.ts
+++ b/src/api/types/WorkflowUserEditableVoice.ts
@@ -18,6 +18,7 @@ export type WorkflowUserEditableVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/WorkflowVoice.ts b/src/api/types/WorkflowVoice.ts
index 4dd99eb..b6a82a1 100644
--- a/src/api/types/WorkflowVoice.ts
+++ b/src/api/types/WorkflowVoice.ts
@@ -18,6 +18,7 @@ export type WorkflowVoice =
| Vapi.NeuphonicVoice
| Vapi.OpenAiVoice
| Vapi.PlayHtVoice
+ | Vapi.WellSaidVoice
| Vapi.RimeAiVoice
| Vapi.SmallestAiVoice
| Vapi.TavusVoice
diff --git a/src/api/types/XaiModelToolsItem.ts b/src/api/types/XaiModelToolsItem.ts
index af34161..97d0089 100644
--- a/src/api/types/XaiModelToolsItem.ts
+++ b/src/api/types/XaiModelToolsItem.ts
@@ -5,6 +5,7 @@ import type * as Vapi from "../index.js";
export type XaiModelToolsItem =
| Vapi.CreateApiRequestToolDto
| Vapi.CreateBashToolDto
+ | Vapi.CreateCodeToolDto
| Vapi.CreateComputerToolDto
| Vapi.CreateDtmfToolDto
| Vapi.CreateEndCallToolDto
diff --git a/src/api/types/index.ts b/src/api/types/index.ts
index ceda5f7..7513ae4 100644
--- a/src/api/types/index.ts
+++ b/src/api/types/index.ts
@@ -39,6 +39,7 @@ export * from "./AssemblyAiCredentialProvider.js";
export * from "./AssemblyAiTranscriber.js";
export * from "./AssemblyAiTranscriberLanguage.js";
export * from "./AssemblyAiTranscriberProvider.js";
+export * from "./AssemblyAiTranscriberSpeechModel.js";
export * from "./Assistant.js";
export * from "./AssistantBackgroundSound.js";
export * from "./AssistantBackgroundSoundZero.js";
@@ -153,6 +154,8 @@ export * from "./CallHookFilterType.js";
export * from "./CallHookModelResponseTimeout.js";
export * from "./CallHookModelResponseTimeoutDoItem.js";
export * from "./CallHookModelResponseTimeoutOn.js";
+export * from "./CallHookTranscriberEndpointedSpeechLowConfidence.js";
+export * from "./CallHookTranscriberEndpointedSpeechLowConfidenceDoItem.js";
export * from "./CallMessagesItem.js";
export * from "./CallPaginatedResponse.js";
export * from "./CallPhoneCallProvider.js";
@@ -300,6 +303,9 @@ export * from "./CloneVoiceDto.js";
export * from "./CloudflareCredential.js";
export * from "./CloudflareCredentialProvider.js";
export * from "./CloudflareR2BucketPlan.js";
+export * from "./CodeTool.js";
+export * from "./CodeToolEnvironmentVariable.js";
+export * from "./CodeToolMessagesItem.js";
export * from "./Compliance.js";
export * from "./ComplianceOverride.js";
export * from "./CompliancePlan.js";
@@ -368,6 +374,9 @@ export * from "./CreateCartesiaCredentialDto.js";
export * from "./CreateCerebrasCredentialDto.js";
export * from "./CreateChatStreamResponse.js";
export * from "./CreateCloudflareCredentialDto.js";
+export * from "./CreateCodeToolDto.js";
+export * from "./CreateCodeToolDtoMessagesItem.js";
+export * from "./CreateCodeToolDtoType.js";
export * from "./CreateComputerToolDto.js";
export * from "./CreateComputerToolDtoMessagesItem.js";
export * from "./CreateComputerToolDtoName.js";
@@ -520,6 +529,7 @@ export * from "./CreateWebChatDtoInputOneItem.js";
export * from "./CreateWebCustomerDto.js";
export * from "./CreateWebhookCredentialDto.js";
export * from "./CreateWebhookCredentialDtoAuthenticationPlan.js";
+export * from "./CreateWellSaidCredentialDto.js";
export * from "./CreateWorkflowDto.js";
export * from "./CreateWorkflowDtoBackgroundSound.js";
export * from "./CreateWorkflowDtoBackgroundSoundZero.js";
@@ -585,6 +595,7 @@ export * from "./DeepSeekModelProvider.js";
export * from "./DeepSeekModelToolsItem.js";
export * from "./DeveloperMessage.js";
export * from "./DeveloperMessageRole.js";
+export * from "./DialPlanEntry.js";
export * from "./DtmfTool.js";
export * from "./DtmfToolMessagesItem.js";
export * from "./Edge.js";
@@ -602,6 +613,7 @@ export * from "./ElevenLabsVoiceIdEnum.js";
export * from "./ElevenLabsVoiceModel.js";
export * from "./EndCallTool.js";
export * from "./EndCallToolMessagesItem.js";
+export * from "./EndpointedSpeechLowConfidenceOptions.js";
export * from "./Eval.js";
export * from "./EvalAnthropicModel.js";
export * from "./EvalAnthropicModelModel.js";
@@ -640,10 +652,19 @@ export * from "./EvalUserEditableMessagesItem.js";
export * from "./EvalUserEditableType.js";
export * from "./ExactReplacement.js";
export * from "./ExactReplacementType.js";
+export * from "./ExportChatDto.js";
+export * from "./ExportChatDtoColumns.js";
+export * from "./ExportChatDtoFormat.js";
+export * from "./ExportChatDtoSortOrder.js";
+export * from "./ExportSessionDto.js";
+export * from "./ExportSessionDtoColumns.js";
+export * from "./ExportSessionDtoFormat.js";
+export * from "./ExportSessionDtoSortOrder.js";
export * from "./FailedEdgeCondition.js";
export * from "./FallbackAssemblyAiTranscriber.js";
export * from "./FallbackAssemblyAiTranscriberLanguage.js";
export * from "./FallbackAssemblyAiTranscriberProvider.js";
+export * from "./FallbackAssemblyAiTranscriberSpeechModel.js";
export * from "./FallbackAzureSpeechTranscriber.js";
export * from "./FallbackAzureSpeechTranscriberLanguage.js";
export * from "./FallbackAzureSpeechTranscriberProvider.js";
@@ -764,6 +785,9 @@ export * from "./FallbackTranscriberPlanTranscribersItem.js";
export * from "./FallbackVapiVoice.js";
export * from "./FallbackVapiVoiceProvider.js";
export * from "./FallbackVapiVoiceVoiceId.js";
+export * from "./FallbackWellSaidVoice.js";
+export * from "./FallbackWellSaidVoiceModel.js";
+export * from "./FallbackWellSaidVoiceProvider.js";
export * from "./File_.js";
export * from "./FileObject.js";
export * from "./FileStatus.js";
@@ -1069,6 +1093,7 @@ export * from "./OpenAiMessageRole.js";
export * from "./OpenAiModel.js";
export * from "./OpenAiModelFallbackModelsItem.js";
export * from "./OpenAiModelModel.js";
+export * from "./OpenAiModelPromptCacheRetention.js";
export * from "./OpenAiModelProvider.js";
export * from "./OpenAiModelToolStrictCompatibilityMode.js";
export * from "./OpenAiModelToolsItem.js";
@@ -1138,6 +1163,8 @@ export * from "./ProviderResource.js";
export * from "./ProviderResourcePaginatedResponse.js";
export * from "./ProviderResourceProvider.js";
export * from "./ProviderResourceResourceName.js";
+export * from "./PublicKeyEncryptionPlan.js";
+export * from "./PublicKeyEncryptionPlanAlgorithm.js";
export * from "./PunctuationBoundary.js";
export * from "./QueryTool.js";
export * from "./QueryToolMessagesItem.js";
@@ -1349,6 +1376,7 @@ export * from "./SpeechmaticsTranscriberNumeralStyle.js";
export * from "./SpeechmaticsTranscriberOperatingPoint.js";
export * from "./SpeechmaticsTranscriberProvider.js";
export * from "./SpeechmaticsTranscriberRegion.js";
+export * from "./SpkiPemPublicKeyConfig.js";
export * from "./SqlInjectionSecurityFilter.js";
export * from "./SqlInjectionSecurityFilterType.js";
export * from "./Squad.js";
@@ -1581,6 +1609,8 @@ export * from "./UpdateByoSipTrunkCredentialDto.js";
export * from "./UpdateCartesiaCredentialDto.js";
export * from "./UpdateCerebrasCredentialDto.js";
export * from "./UpdateCloudflareCredentialDto.js";
+export * from "./UpdateCodeToolDto.js";
+export * from "./UpdateCodeToolDtoMessagesItem.js";
export * from "./UpdateComputerToolDto.js";
export * from "./UpdateComputerToolDtoMessagesItem.js";
export * from "./UpdateComputerToolDtoName.js";
@@ -1661,12 +1691,8 @@ export * from "./UpdateS3CredentialDto.js";
export * from "./UpdateSlackOAuth2AuthorizationCredentialDto.js";
export * from "./UpdateSlackSendMessageToolDto.js";
export * from "./UpdateSlackSendMessageToolDtoMessagesItem.js";
-export * from "./UpdateSmallestAiCredentialDto.js";
export * from "./UpdateSmsToolDto.js";
export * from "./UpdateSmsToolDtoMessagesItem.js";
-export * from "./UpdateSpeechmaticsCredentialDto.js";
-export * from "./UpdateSupabaseCredentialDto.js";
-export * from "./UpdateTavusCredentialDto.js";
export * from "./UpdateTelnyxPhoneNumberDto.js";
export * from "./UpdateTelnyxPhoneNumberDtoFallbackDestination.js";
export * from "./UpdateTelnyxPhoneNumberDtoHooksItem.js";
@@ -1711,6 +1737,7 @@ export * from "./UpdateVonagePhoneNumberDtoFallbackDestination.js";
export * from "./UpdateVonagePhoneNumberDtoHooksItem.js";
export * from "./UpdateWebhookCredentialDto.js";
export * from "./UpdateWebhookCredentialDtoAuthenticationPlan.js";
+export * from "./UpdateWellSaidCredentialDto.js";
export * from "./UpdateWorkflowDto.js";
export * from "./UpdateWorkflowDtoBackgroundSound.js";
export * from "./UpdateWorkflowDtoBackgroundSoundZero.js";
@@ -1766,6 +1793,11 @@ export * from "./WebChatOutputItem.js";
export * from "./WebhookCredential.js";
export * from "./WebhookCredentialAuthenticationPlan.js";
export * from "./WebhookCredentialProvider.js";
+export * from "./WellSaidCredential.js";
+export * from "./WellSaidCredentialProvider.js";
+export * from "./WellSaidVoice.js";
+export * from "./WellSaidVoiceModel.js";
+export * from "./WellSaidVoiceProvider.js";
export * from "./Workflow.js";
export * from "./WorkflowAnthropicModel.js";
export * from "./WorkflowAnthropicModelModel.js";
diff --git a/src/version.ts b/src/version.ts
index fb19437..4241b3c 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const SDK_VERSION = "0.11.0";
+export const SDK_VERSION = "0.12.0";
diff --git a/tests/wire/assistants.test.ts b/tests/wire/assistants.test.ts
index cb2fede..fde619d 100644
--- a/tests/wire/assistants.test.ts
+++ b/tests/wire/assistants.test.ts
@@ -12,12 +12,14 @@ describe("AssistantsClient", () => {
{
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -32,6 +34,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -279,6 +282,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -302,12 +306,14 @@ describe("AssistantsClient", () => {
{
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -322,6 +328,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -667,6 +674,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -713,12 +721,14 @@ describe("AssistantsClient", () => {
const rawResponseBody = {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -733,6 +743,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -993,6 +1004,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -1021,12 +1033,14 @@ describe("AssistantsClient", () => {
expect(response).toEqual({
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1041,6 +1055,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1442,6 +1457,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -1487,12 +1503,14 @@ describe("AssistantsClient", () => {
const rawResponseBody = {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1507,6 +1525,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1767,6 +1786,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -1790,12 +1810,14 @@ describe("AssistantsClient", () => {
expect(response).toEqual({
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1810,6 +1832,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2211,6 +2234,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -2256,12 +2280,14 @@ describe("AssistantsClient", () => {
const rawResponseBody = {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2276,6 +2302,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2536,6 +2563,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2559,12 +2587,14 @@ describe("AssistantsClient", () => {
expect(response).toEqual({
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2579,6 +2609,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2980,6 +3011,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -3025,12 +3057,14 @@ describe("AssistantsClient", () => {
const rawResponseBody = {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3045,6 +3079,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3305,6 +3340,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -3335,12 +3371,14 @@ describe("AssistantsClient", () => {
expect(response).toEqual({
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3355,6 +3393,7 @@ describe("AssistantsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3756,6 +3795,7 @@ describe("AssistantsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
diff --git a/tests/wire/calls.test.ts b/tests/wire/calls.test.ts
index 8b6bc4f..77c7cbd 100644
--- a/tests/wire/calls.test.ts
+++ b/tests/wire/calls.test.ts
@@ -16,6 +16,7 @@ describe("CallsClient", () => {
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -43,6 +44,7 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
},
artifactPlan: {
@@ -96,6 +98,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -105,6 +108,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -271,6 +275,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -280,6 +285,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -471,6 +477,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -480,6 +487,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -533,6 +541,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -542,6 +551,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -733,6 +743,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -742,6 +753,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -757,7 +769,7 @@ describe("CallsClient", () => {
name: "name",
},
],
- model: { provider: "openai", model: "gpt-5.1" },
+ model: { provider: "openai", model: "gpt-5.2" },
transcriber: {
provider: "assembly-ai",
confidenceThreshold: 0.4,
@@ -765,6 +777,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -774,6 +787,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -941,6 +955,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -950,6 +965,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1030,6 +1046,7 @@ describe("CallsClient", () => {
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -1059,6 +1076,7 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
},
artifactPlan: {
@@ -1159,6 +1177,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1168,6 +1187,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1388,6 +1408,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1397,6 +1418,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1654,6 +1676,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1663,6 +1686,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1729,6 +1753,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1738,6 +1763,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1995,6 +2021,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2004,6 +2031,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2027,7 +2055,7 @@ describe("CallsClient", () => {
],
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
},
transcriber: {
provider: "assembly-ai",
@@ -2036,6 +2064,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2045,6 +2074,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2286,6 +2316,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2295,6 +2326,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2389,11 +2421,13 @@ describe("CallsClient", () => {
detectedThreats: ["detectedThreats"],
originalMessage: "originalMessage",
metadata: { key: "value" },
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -2433,20 +2467,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -2508,12 +2547,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2528,6 +2569,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2775,6 +2817,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2789,12 +2832,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2809,6 +2854,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3077,6 +3123,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -3100,6 +3147,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3109,6 +3157,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3292,12 +3341,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3312,6 +3363,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3580,6 +3632,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -3603,6 +3656,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3612,6 +3666,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3625,15 +3680,17 @@ describe("CallsClient", () => {
name: "name",
},
],
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3648,6 +3705,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3692,6 +3750,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -3850,6 +3909,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -3872,6 +3932,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3881,6 +3942,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4104,11 +4166,13 @@ describe("CallsClient", () => {
metadata: {
key: "value",
},
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -4155,20 +4219,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -4284,12 +4353,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -4304,6 +4375,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4649,6 +4721,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -4684,12 +4757,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -4704,6 +4779,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5082,6 +5158,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -5126,6 +5203,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -5135,6 +5213,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5384,12 +5463,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -5404,6 +5485,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5782,6 +5864,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -5826,6 +5909,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -5835,6 +5919,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5858,18 +5943,20 @@ describe("CallsClient", () => {
],
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -5884,6 +5971,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5961,6 +6049,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -6189,6 +6278,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -6228,6 +6318,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6237,6 +6328,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6512,6 +6604,7 @@ describe("CallsClient", () => {
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: { type: "number", number: "number" },
id: "id",
orgId: "orgId",
@@ -6541,6 +6634,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6550,6 +6644,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6602,6 +6697,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6611,6 +6707,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6665,6 +6762,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6674,6 +6772,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6730,6 +6829,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6739,6 +6839,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6761,6 +6862,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6770,6 +6872,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6805,7 +6908,10 @@ describe("CallsClient", () => {
};
server.mockEndpoint().get("/v2/call").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
- const response = await client.calls.callControllerFindAllPaginated();
+ const response = await client.calls.callControllerFindAllPaginated({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ customerNumberAny: "+1234567890,+0987654321",
+ });
expect(response).toEqual({
results: [
{
@@ -6829,6 +6935,7 @@ describe("CallsClient", () => {
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
type: "number",
number: "number",
@@ -6861,6 +6968,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6870,6 +6978,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6935,6 +7044,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6944,6 +7054,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7013,6 +7124,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -7022,6 +7134,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7091,6 +7204,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -7100,6 +7214,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7128,6 +7243,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -7137,6 +7253,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7216,11 +7333,13 @@ describe("CallsClient", () => {
detectedThreats: ["detectedThreats"],
originalMessage: "originalMessage",
metadata: { key: "value" },
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -7260,20 +7379,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -7335,12 +7459,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -7355,6 +7481,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7602,6 +7729,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -7616,12 +7744,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -7636,6 +7766,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7904,6 +8035,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -7927,6 +8059,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -7936,6 +8069,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -8119,12 +8253,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -8139,6 +8275,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -8407,6 +8544,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -8430,6 +8568,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -8439,6 +8578,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -8452,15 +8592,17 @@ describe("CallsClient", () => {
name: "name",
},
],
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -8475,6 +8617,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -8519,6 +8662,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -8677,6 +8821,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -8699,6 +8844,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -8708,6 +8854,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -8926,11 +9073,13 @@ describe("CallsClient", () => {
metadata: {
key: "value",
},
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -8977,20 +9126,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -9106,12 +9260,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -9126,6 +9282,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -9471,6 +9628,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -9506,12 +9664,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -9526,6 +9686,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -9904,6 +10065,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -9948,6 +10110,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -9957,6 +10120,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -10206,12 +10370,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -10226,6 +10392,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -10604,6 +10771,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -10648,6 +10816,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -10657,6 +10826,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -10680,18 +10850,20 @@ describe("CallsClient", () => {
],
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -10706,6 +10878,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -10783,6 +10956,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -11011,6 +11185,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -11050,6 +11225,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -11059,6 +11235,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -11340,11 +11517,13 @@ describe("CallsClient", () => {
detectedThreats: ["detectedThreats"],
originalMessage: "originalMessage",
metadata: { key: "value" },
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -11384,20 +11563,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -11459,12 +11643,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -11479,6 +11665,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -11726,6 +11913,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -11740,12 +11928,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -11760,6 +11950,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -12028,6 +12219,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -12051,6 +12243,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -12060,6 +12253,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -12243,12 +12437,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -12263,6 +12459,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -12531,6 +12728,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -12554,6 +12752,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -12563,6 +12762,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -12576,15 +12776,17 @@ describe("CallsClient", () => {
name: "name",
},
],
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -12599,6 +12801,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -12643,6 +12846,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -12801,6 +13005,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -12823,6 +13028,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -12832,6 +13038,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -13057,11 +13264,13 @@ describe("CallsClient", () => {
metadata: {
key: "value",
},
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -13108,20 +13317,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -13237,12 +13451,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -13257,6 +13473,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -13602,6 +13819,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -13637,12 +13855,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -13657,6 +13877,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -14035,6 +14256,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -14079,6 +14301,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -14088,6 +14311,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -14337,12 +14561,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -14357,6 +14583,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -14735,6 +14962,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -14779,6 +15007,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -14788,6 +15017,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -14811,18 +15041,20 @@ describe("CallsClient", () => {
],
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -14837,6 +15069,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -14914,6 +15147,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -15142,6 +15376,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -15181,6 +15416,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -15190,6 +15426,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -15471,11 +15708,13 @@ describe("CallsClient", () => {
detectedThreats: ["detectedThreats"],
originalMessage: "originalMessage",
metadata: { key: "value" },
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -15515,20 +15754,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -15590,12 +15834,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -15610,6 +15856,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -15857,6 +16104,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -15871,12 +16119,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -15891,6 +16141,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -16159,6 +16410,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -16182,6 +16434,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -16191,6 +16444,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -16374,12 +16628,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -16394,6 +16650,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -16662,6 +16919,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -16685,6 +16943,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -16694,6 +16953,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -16707,15 +16967,17 @@ describe("CallsClient", () => {
name: "name",
},
],
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -16730,6 +16992,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -16774,6 +17037,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -16932,6 +17196,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -16954,6 +17219,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -16963,6 +17229,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -17188,11 +17455,13 @@ describe("CallsClient", () => {
metadata: {
key: "value",
},
+ speakerLabel: "speakerLabel",
},
],
phoneCallTransport: "sip",
status: "scheduled",
endedReason: "call-start-error-neither-assistant-nor-server-set",
+ endedMessage: "endedMessage",
destination: {
message: "message",
type: "number",
@@ -17239,20 +17508,25 @@ describe("CallsClient", () => {
total: 1.1,
llmPromptTokens: 1.1,
llmCompletionTokens: 1.1,
+ llmCachedPromptTokens: 1.1,
ttsCharacters: 1.1,
analysisCostBreakdown: {
summary: 1.1,
summaryPromptTokens: 1.1,
summaryCompletionTokens: 1.1,
+ summaryCachedPromptTokens: 1.1,
structuredData: 1.1,
structuredDataPromptTokens: 1.1,
structuredDataCompletionTokens: 1.1,
+ structuredDataCachedPromptTokens: 1.1,
successEvaluation: 1.1,
successEvaluationPromptTokens: 1.1,
successEvaluationCompletionTokens: 1.1,
+ successEvaluationCachedPromptTokens: 1.1,
structuredOutput: 1.1,
structuredOutputPromptTokens: 1.1,
structuredOutputCompletionTokens: 1.1,
+ structuredOutputCachedPromptTokens: 1.1,
},
},
artifactPlan: {
@@ -17368,12 +17642,14 @@ describe("CallsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -17388,6 +17664,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -17733,6 +18010,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -17768,12 +18046,14 @@ describe("CallsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -17788,6 +18068,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -18166,6 +18447,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -18210,6 +18492,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -18219,6 +18502,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -18468,12 +18752,14 @@ describe("CallsClient", () => {
squadOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -18488,6 +18774,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -18866,6 +19153,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -18910,6 +19198,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -18919,6 +19208,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -18942,18 +19232,20 @@ describe("CallsClient", () => {
],
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -18968,6 +19260,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -19045,6 +19338,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -19273,6 +19567,7 @@ describe("CallsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -19312,6 +19607,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -19321,6 +19617,7 @@ describe("CallsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
diff --git a/tests/wire/campaigns.test.ts b/tests/wire/campaigns.test.ts
index f0861a6..d173ab0 100644
--- a/tests/wire/campaigns.test.ts
+++ b/tests/wire/campaigns.test.ts
@@ -16,7 +16,9 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [{ phoneNumberId: "phoneNumberId", customers: [{}] }],
schedulePlan: { earliestAt: "2024-01-15T09:30:00Z" },
customers: [{}],
id: "id",
@@ -51,7 +53,14 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [
+ {
+ phoneNumberId: "phoneNumberId",
+ customers: [{}],
+ },
+ ],
schedulePlan: {
earliestAt: "2024-01-15T09:30:00Z",
},
@@ -84,14 +93,16 @@ describe("CampaignsClient", () => {
test("CampaignController_create", async () => {
const server = mockServerPool.createServer();
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
- const rawRequestBody = { name: "Q2 Sales Campaign", phoneNumberId: "phoneNumberId", customers: [{}] };
+ const rawRequestBody = { name: "Q2 Sales Campaign" };
const rawResponseBody = {
status: "scheduled",
endedReason: "campaign.scheduled.ended-by-user",
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [{ phoneNumberId: "phoneNumberId", customers: [{}] }],
schedulePlan: { earliestAt: "2024-01-15T09:30:00Z", latestAt: "2024-01-15T09:30:00Z" },
customers: [
{
@@ -105,6 +116,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -114,6 +126,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -187,8 +200,6 @@ describe("CampaignsClient", () => {
const response = await client.campaigns.campaignControllerCreate({
name: "Q2 Sales Campaign",
- phoneNumberId: "phoneNumberId",
- customers: [{}],
});
expect(response).toEqual({
status: "scheduled",
@@ -196,7 +207,14 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [
+ {
+ phoneNumberId: "phoneNumberId",
+ customers: [{}],
+ },
+ ],
schedulePlan: {
earliestAt: "2024-01-15T09:30:00Z",
latestAt: "2024-01-15T09:30:00Z",
@@ -213,6 +231,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -222,6 +241,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -311,7 +331,9 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [{ phoneNumberId: "phoneNumberId", customers: [{}] }],
schedulePlan: { earliestAt: "2024-01-15T09:30:00Z", latestAt: "2024-01-15T09:30:00Z" },
customers: [
{
@@ -325,6 +347,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -334,6 +357,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -407,7 +431,14 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [
+ {
+ phoneNumberId: "phoneNumberId",
+ customers: [{}],
+ },
+ ],
schedulePlan: {
earliestAt: "2024-01-15T09:30:00Z",
latestAt: "2024-01-15T09:30:00Z",
@@ -424,6 +455,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -433,6 +465,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -522,7 +555,9 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [{ phoneNumberId: "phoneNumberId", customers: [{}] }],
schedulePlan: { earliestAt: "2024-01-15T09:30:00Z", latestAt: "2024-01-15T09:30:00Z" },
customers: [
{
@@ -536,6 +571,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -545,6 +581,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -618,7 +655,14 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [
+ {
+ phoneNumberId: "phoneNumberId",
+ customers: [{}],
+ },
+ ],
schedulePlan: {
earliestAt: "2024-01-15T09:30:00Z",
latestAt: "2024-01-15T09:30:00Z",
@@ -635,6 +679,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -644,6 +689,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -733,7 +779,9 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [{ phoneNumberId: "phoneNumberId", customers: [{}] }],
schedulePlan: { earliestAt: "2024-01-15T09:30:00Z", latestAt: "2024-01-15T09:30:00Z" },
customers: [
{
@@ -747,6 +795,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -756,6 +805,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -836,7 +886,14 @@ describe("CampaignsClient", () => {
name: "Q2 Sales Campaign",
assistantId: "assistantId",
workflowId: "workflowId",
+ squadId: "squadId",
phoneNumberId: "phoneNumberId",
+ dialPlan: [
+ {
+ phoneNumberId: "phoneNumberId",
+ customers: [{}],
+ },
+ ],
schedulePlan: {
earliestAt: "2024-01-15T09:30:00Z",
latestAt: "2024-01-15T09:30:00Z",
@@ -853,6 +910,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -862,6 +920,7 @@ describe("CampaignsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
diff --git a/tests/wire/chats.test.ts b/tests/wire/chats.test.ts
index 76e14c4..be72ccc 100644
--- a/tests/wire/chats.test.ts
+++ b/tests/wire/chats.test.ts
@@ -20,6 +20,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -29,6 +30,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -81,6 +83,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -90,6 +93,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -164,7 +168,9 @@ describe("ChatsClient", () => {
};
server.mockEndpoint().get("/chat").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
- const response = await client.chats.list();
+ const response = await client.chats.list({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ });
expect(response).toEqual({
results: [
{
@@ -177,6 +183,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -186,6 +193,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -251,6 +259,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -260,6 +269,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -380,12 +390,14 @@ describe("ChatsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -400,6 +412,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -647,6 +660,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -661,12 +675,14 @@ describe("ChatsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -681,6 +697,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -949,6 +966,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -972,6 +990,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -981,6 +1000,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1172,7 +1192,16 @@ describe("ChatsClient", () => {
output: [{ role: "role", message: "message", time: 1.1, secondsFromStart: 1.1 }],
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
cost: 1.1,
};
server
@@ -1192,12 +1221,14 @@ describe("ChatsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1212,6 +1243,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1557,6 +1589,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -1592,12 +1625,14 @@ describe("ChatsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1612,6 +1647,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1990,6 +2026,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -2034,6 +2071,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2043,6 +2081,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2322,6 +2361,7 @@ describe("ChatsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
@@ -2329,6 +2369,18 @@ describe("ChatsClient", () => {
});
});
+ test("ChatController_chatsExport", async () => {
+ const server = mockServerPool.createServer();
+ const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
+
+ server.mockEndpoint().get("/chat/export").respondWith().statusCode(200).build();
+
+ const response = await client.chats.chatControllerChatsExport({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ });
+ expect(response).toEqual(undefined);
+ });
+
test("get", async () => {
const server = mockServerPool.createServer();
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
@@ -2338,12 +2390,14 @@ describe("ChatsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2358,6 +2412,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2605,6 +2660,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2619,12 +2675,14 @@ describe("ChatsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2639,6 +2697,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2907,6 +2966,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2930,6 +2990,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2939,6 +3000,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3130,7 +3192,16 @@ describe("ChatsClient", () => {
output: [{ role: "role", message: "message", time: 1.1, secondsFromStart: 1.1 }],
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
cost: 1.1,
};
server.mockEndpoint().get("/chat/id").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
@@ -3143,12 +3214,14 @@ describe("ChatsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3163,6 +3236,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3508,6 +3582,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -3543,12 +3618,14 @@ describe("ChatsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3563,6 +3640,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3941,6 +4019,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -3985,6 +4064,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3994,6 +4074,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4273,6 +4354,7 @@ describe("ChatsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
@@ -4289,12 +4371,14 @@ describe("ChatsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -4309,6 +4393,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4556,6 +4641,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -4570,12 +4656,14 @@ describe("ChatsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -4590,6 +4678,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4858,6 +4947,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -4881,6 +4971,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -4890,6 +4981,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5081,7 +5173,16 @@ describe("ChatsClient", () => {
output: [{ role: "role", message: "message", time: 1.1, secondsFromStart: 1.1 }],
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
cost: 1.1,
};
server.mockEndpoint().delete("/chat/id").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
@@ -5094,12 +5195,14 @@ describe("ChatsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -5114,6 +5217,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5459,6 +5563,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -5494,12 +5599,14 @@ describe("ChatsClient", () => {
assistantOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -5514,6 +5621,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5892,6 +6000,7 @@ describe("ChatsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -5936,6 +6045,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -5945,6 +6055,7 @@ describe("ChatsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6224,6 +6335,7 @@ describe("ChatsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
diff --git a/tests/wire/eval.test.ts b/tests/wire/eval.test.ts
index 6a5fa0c..ded5f41 100644
--- a/tests/wire/eval.test.ts
+++ b/tests/wire/eval.test.ts
@@ -323,6 +323,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -332,6 +333,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -498,6 +500,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -507,6 +510,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -744,6 +748,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -753,6 +758,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -973,6 +979,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -982,6 +989,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1288,6 +1296,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1297,6 +1306,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1463,6 +1473,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1472,6 +1483,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1709,6 +1721,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1718,6 +1731,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1938,6 +1952,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1947,6 +1962,7 @@ describe("EvalClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
diff --git a/tests/wire/phoneNumbers.test.ts b/tests/wire/phoneNumbers.test.ts
index d357f85..3b1c22b 100644
--- a/tests/wire/phoneNumbers.test.ts
+++ b/tests/wire/phoneNumbers.test.ts
@@ -36,6 +36,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -91,6 +92,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -166,6 +168,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -246,6 +249,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -441,6 +445,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -513,6 +518,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -587,6 +593,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -665,6 +672,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -739,6 +747,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -819,6 +828,7 @@ describe("PhoneNumbersClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
diff --git a/tests/wire/sessions.test.ts b/tests/wire/sessions.test.ts
index c86e103..1c65def 100644
--- a/tests/wire/sessions.test.ts
+++ b/tests/wire/sessions.test.ts
@@ -31,6 +31,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -40,6 +41,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -102,7 +104,10 @@ describe("SessionsClient", () => {
};
server.mockEndpoint().get("/session").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
- const response = await client.sessions.list();
+ const response = await client.sessions.list({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ customerNumberAny: "+1234567890,+0987654321",
+ });
expect(response).toEqual({
results: [
{
@@ -134,6 +139,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -143,6 +149,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -240,7 +247,16 @@ describe("SessionsClient", () => {
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
cost: 1.1,
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
name: "name",
status: "active",
expirationSeconds: 86400,
@@ -248,12 +264,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -268,6 +286,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -515,6 +534,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -538,6 +558,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -547,6 +568,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -739,6 +761,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -748,6 +771,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -960,6 +984,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -1021,6 +1046,7 @@ describe("SessionsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
@@ -1031,12 +1057,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1051,6 +1079,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1396,6 +1425,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -1440,6 +1470,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1449,6 +1480,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1714,6 +1746,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1723,6 +1756,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2012,6 +2046,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -2091,6 +2126,19 @@ describe("SessionsClient", () => {
});
});
+ test("SessionController_sessionsExport", async () => {
+ const server = mockServerPool.createServer();
+ const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
+
+ server.mockEndpoint().get("/session/export").respondWith().statusCode(200).build();
+
+ const response = await client.sessions.sessionControllerSessionsExport({
+ assistantIdAny: "assistant-1,assistant-2,assistant-3",
+ customerNumberAny: "+1234567890,+0987654321",
+ });
+ expect(response).toEqual(undefined);
+ });
+
test("get", async () => {
const server = mockServerPool.createServer();
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
@@ -2101,7 +2149,16 @@ describe("SessionsClient", () => {
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
cost: 1.1,
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
name: "name",
status: "active",
expirationSeconds: 86400,
@@ -2109,12 +2166,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2129,6 +2188,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2376,6 +2436,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2399,6 +2460,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2408,6 +2470,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2600,6 +2663,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2609,6 +2673,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2821,6 +2886,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2877,6 +2943,7 @@ describe("SessionsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
@@ -2887,12 +2954,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2907,6 +2976,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3252,6 +3322,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -3296,6 +3367,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3305,6 +3377,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3570,6 +3643,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3579,6 +3653,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3868,6 +3943,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -3957,7 +4033,16 @@ describe("SessionsClient", () => {
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
cost: 1.1,
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
name: "name",
status: "active",
expirationSeconds: 86400,
@@ -3965,12 +4050,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3985,6 +4072,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4232,6 +4320,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -4255,6 +4344,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -4264,6 +4354,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4456,6 +4547,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -4465,6 +4557,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4677,6 +4770,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -4733,6 +4827,7 @@ describe("SessionsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
@@ -4743,12 +4838,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -4763,6 +4860,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5108,6 +5206,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -5152,6 +5251,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -5161,6 +5261,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5426,6 +5527,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -5435,6 +5537,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -5724,6 +5827,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -5813,7 +5917,16 @@ describe("SessionsClient", () => {
createdAt: "2024-01-15T09:30:00Z",
updatedAt: "2024-01-15T09:30:00Z",
cost: 1.1,
- costs: [{ type: "model", model: { key: "value" }, promptTokens: 1.1, completionTokens: 1.1, cost: 1.1 }],
+ costs: [
+ {
+ type: "model",
+ model: { key: "value" },
+ promptTokens: 1.1,
+ completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
+ cost: 1.1,
+ },
+ ],
name: "name",
status: "active",
expirationSeconds: 86400,
@@ -5821,12 +5934,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -5841,6 +5956,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6088,6 +6204,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -6111,6 +6228,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6120,6 +6238,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6312,6 +6431,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -6321,6 +6441,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6533,6 +6654,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -6596,6 +6718,7 @@ describe("SessionsClient", () => {
},
promptTokens: 1.1,
completionTokens: 1.1,
+ cachedPromptTokens: 1.1,
cost: 1.1,
},
],
@@ -6606,12 +6729,14 @@ describe("SessionsClient", () => {
assistant: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -6626,6 +6751,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -6971,6 +7097,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -7015,6 +7142,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -7024,6 +7152,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7289,6 +7418,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -7298,6 +7428,7 @@ describe("SessionsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -7587,6 +7718,7 @@ describe("SessionsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
diff --git a/tests/wire/squads.test.ts b/tests/wire/squads.test.ts
index e0406c7..1453075 100644
--- a/tests/wire/squads.test.ts
+++ b/tests/wire/squads.test.ts
@@ -20,6 +20,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -29,6 +30,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -229,6 +231,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -238,6 +241,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -509,6 +513,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -518,6 +523,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -570,6 +576,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -579,6 +586,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -628,12 +636,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -648,6 +658,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -916,6 +927,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -963,6 +975,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -972,6 +985,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1037,6 +1051,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1046,6 +1061,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1108,12 +1124,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1128,6 +1146,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1506,6 +1525,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -1563,6 +1583,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1572,6 +1593,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1624,6 +1646,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -1633,6 +1656,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1682,12 +1706,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -1702,6 +1728,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -1970,6 +1997,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -2010,6 +2038,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2019,6 +2048,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2084,6 +2114,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2093,6 +2124,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2155,12 +2187,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2175,6 +2209,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2553,6 +2588,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -2610,6 +2646,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2619,6 +2656,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2671,6 +2709,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -2680,6 +2719,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -2729,12 +2769,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -2749,6 +2791,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3017,6 +3060,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -3057,6 +3101,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3066,6 +3111,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3131,6 +3177,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3140,6 +3187,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3202,12 +3250,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3222,6 +3272,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3600,6 +3651,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
@@ -3657,6 +3709,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3666,6 +3719,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3718,6 +3772,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -3727,6 +3782,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -3776,12 +3832,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -3796,6 +3854,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4064,6 +4123,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: { key: "value" },
backoffPlan: {
@@ -4112,6 +4172,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -4121,6 +4182,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4186,6 +4248,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
fallbackPlan: {
transcribers: [
{
@@ -4195,6 +4258,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4257,12 +4321,14 @@ describe("SquadsClient", () => {
membersOverrides: {
transcriber: {
provider: "assembly-ai",
- language: "en",
+ language: "multi",
confidenceThreshold: 0.4,
formatTurns: true,
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
+ speechModel: "universal-streaming-english",
realtimeUrl: "realtimeUrl",
wordBoost: ["wordBoost"],
keytermsPrompt: ["keytermsPrompt"],
@@ -4277,6 +4343,7 @@ describe("SquadsClient", () => {
endOfTurnConfidenceThreshold: 0.7,
minEndOfTurnSilenceWhenConfident: 160,
maxTurnSilence: 400,
+ vadAssistedEndpointingEnabled: true,
},
],
},
@@ -4655,6 +4722,7 @@ describe("SquadsClient", () => {
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
staticIpAddressesEnabled: false,
+ encryptedPaths: ["encryptedPaths"],
url: "url",
headers: {
key: "value",
diff --git a/tests/wire/structuredOutputs.test.ts b/tests/wire/structuredOutputs.test.ts
index 2a78586..94a201d 100644
--- a/tests/wire/structuredOutputs.test.ts
+++ b/tests/wire/structuredOutputs.test.ts
@@ -11,7 +11,7 @@ describe("StructuredOutputsClient", () => {
const rawResponseBody = {
results: [
{
- model: { provider: "openai", model: "gpt-5.1" },
+ model: { provider: "openai", model: "gpt-5.2" },
compliancePlan: { forceStoreOnHipaaEnabled: false },
id: "id",
orgId: "orgId",
@@ -41,7 +41,7 @@ describe("StructuredOutputsClient", () => {
{
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
},
compliancePlan: {
forceStoreOnHipaaEnabled: false,
@@ -75,7 +75,7 @@ describe("StructuredOutputsClient", () => {
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
const rawRequestBody = { name: "name", schema: { type: "string" } };
const rawResponseBody = {
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
compliancePlan: { forceStoreOnHipaaEnabled: false },
id: "id",
orgId: "orgId",
@@ -115,7 +115,7 @@ describe("StructuredOutputsClient", () => {
expect(response).toEqual({
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
@@ -153,7 +153,7 @@ describe("StructuredOutputsClient", () => {
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
const rawResponseBody = {
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
compliancePlan: { forceStoreOnHipaaEnabled: false },
id: "id",
orgId: "orgId",
@@ -189,7 +189,7 @@ describe("StructuredOutputsClient", () => {
expect(response).toEqual({
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
@@ -227,7 +227,7 @@ describe("StructuredOutputsClient", () => {
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
const rawResponseBody = {
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
compliancePlan: { forceStoreOnHipaaEnabled: false },
id: "id",
orgId: "orgId",
@@ -263,7 +263,7 @@ describe("StructuredOutputsClient", () => {
expect(response).toEqual({
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
@@ -301,7 +301,7 @@ describe("StructuredOutputsClient", () => {
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = {
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
compliancePlan: { forceStoreOnHipaaEnabled: false },
id: "id",
orgId: "orgId",
@@ -339,7 +339,7 @@ describe("StructuredOutputsClient", () => {
expect(response).toEqual({
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
@@ -377,7 +377,7 @@ describe("StructuredOutputsClient", () => {
const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
const rawRequestBody = { callIds: ["callIds"] };
const rawResponseBody = {
- model: { provider: "openai", model: "gpt-5.1", temperature: 1.1, maxTokens: 1.1 },
+ model: { provider: "openai", model: "gpt-5.2", temperature: 1.1, maxTokens: 1.1 },
compliancePlan: { forceStoreOnHipaaEnabled: false },
id: "id",
orgId: "orgId",
@@ -414,7 +414,7 @@ describe("StructuredOutputsClient", () => {
expect(response).toEqual({
model: {
provider: "openai",
- model: "gpt-5.1",
+ model: "gpt-5.2",
temperature: 1.1,
maxTokens: 1.1,
},
@@ -446,28 +446,4 @@ describe("StructuredOutputsClient", () => {
},
});
});
-
- test("StructuredOutputController_suggest", async () => {
- const server = mockServerPool.createServer();
- const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
- const rawRequestBody = { assistantId: "550e8400-e29b-41d4-a716-446655440000" };
- const rawResponseBody = [{ key: "value" }];
- server
- .mockEndpoint()
- .post("/structured-output/suggest")
- .jsonBody(rawRequestBody)
- .respondWith()
- .statusCode(200)
- .jsonBody(rawResponseBody)
- .build();
-
- const response = await client.structuredOutputs.structuredOutputControllerSuggest({
- assistantId: "550e8400-e29b-41d4-a716-446655440000",
- });
- expect(response).toEqual([
- {
- key: "value",
- },
- ]);
- });
});
diff --git a/tests/wire/tools.test.ts b/tests/wire/tools.test.ts
index 409d67c..185ae9b 100644
--- a/tests/wire/tools.test.ts
+++ b/tests/wire/tools.test.ts
@@ -15,6 +15,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -71,6 +72,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -170,6 +172,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -263,6 +266,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -373,6 +377,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -457,6 +462,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -567,6 +573,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -651,6 +658,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -761,6 +769,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -853,6 +862,7 @@ describe("ToolsClient", () => {
method: "POST",
timeoutSeconds: 20,
credentialId: "550e8400-e29b-41d4-a716-446655440000",
+ encryptedPaths: ["encryptedPaths"],
id: "id",
orgId: "orgId",
createdAt: "2024-01-15T09:30:00Z",
@@ -944,4 +954,29 @@ describe("ToolsClient", () => {
},
});
});
+
+ test("ToolController_testCodeExecution", async () => {
+ const server = mockServerPool.createServer();
+ const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });
+
+ const rawResponseBody = {
+ success: true,
+ result: { key: "value" },
+ error: "error",
+ logs: "logs",
+ executionTimeMs: 1.1,
+ };
+ server.mockEndpoint().post("/tool/code/test").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
+
+ const response = await client.tools.toolControllerTestCodeExecution();
+ expect(response).toEqual({
+ success: true,
+ result: {
+ key: "value",
+ },
+ error: "error",
+ logs: "logs",
+ executionTimeMs: 1.1,
+ });
+ });
});