diff --git a/.fern/metadata.json b/.fern/metadata.json index cdc45a10..60e34696 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -1,5 +1,5 @@ { - "cliVersion": "5.149.0", + "cliVersion": "5.202.0", "generatorName": "fernapi/fern-typescript-sdk", "generatorVersion": "3.63.0", "generatorConfig": { @@ -11,10 +11,10 @@ "omitUndefined": true, "enableInlineTypes": false }, - "originGitCommit": "d60758e7438e5ed4f06365c77535f6aedb9f0eb6", + "originGitCommit": "c0931aa144ea8cf8a17cdaa0552effed63c3c9c2", "originGitCommitIsDirty": true, "invokedBy": "ci", "requestedVersion": "AUTO", "ciProvider": "unknown", - "sdkVersion": "3.0.0" + "sdkVersion": "4.0.0" } diff --git a/.fern/replay.lock b/.fern/replay.lock index c3946c7b..73249d0e 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -24,5 +24,11 @@ generations: cli_version: unknown generator_versions: fernapi/fern-typescript-sdk: 3.63.0 -current_generation: f2a3bda388ec8dc93d4807838a02e649e8a7a065 + - commit_sha: 2f43525d11a5305895947f906c67b974735f184f + tree_hash: 68de3355f62dd593e64408c05e4701b0bab23884 + timestamp: 2026-11-10T05:50:19.780Z + cli_version: unknown + generator_versions: + fernapi/fern-typescript-sdk: 3.63.0 +current_generation: 2f43525d11a5305895947f906c67b974735f184f patches: [] diff --git a/changelog.md b/changelog.md index bbbde12d..dbae8bf4 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,14 @@ +## [4.0.0] - 2026-11-10 +### Breaking Changes +- **`SquadMemberDto.assistant`** and **`TesterPlan.assistant`** — type changed from `CreateAssistantDto` to `TransientAssistantDto`; update any code constructing or reading these fields to use `TransientAssistantDto`. + +### Added +- **`TransientAssistantDto`** — new interface for configuring a full transient (non-persisted) assistant inline, covering transcriber, model, voice, hooks, credentials, and all standard assistant settings. +- **`client.guardrailPacks`** and **`client.guardrailRules`** — new `GuardrailPacksClient` and `GuardrailRulesClient` for browsing guardrail packs and rules, with list, paginated, and single-fetch methods; supporting sort enums also added. +- **`CallHealthDashboard*` type family** — 40+ new interfaces and enums for monitoring assistant goal performance, issue tracking, call availability, coverage reporting, and triage actions. +- **`SimulationOnboarding*`** and **`TrafficTab*` type families** — new types supporting AI-assisted simulation suite generation/onboarding workflows and per-version traffic analytics dashboards. +- **New enum values and fields across several types** — including `SonioxTranscriber.agentTextInputEnabled`, `WorkflowOpenAiModel.reasoningEffort`, `TurnLatency.unmeasured`, `CartesiaVoiceModel` Sonic 3.6 variants, Odia/Urdu language codes, Reson8 transcriber/credential variants, and new `CallEndedReason`/`ServerMessageStatusUpdateEndedReason` values covering guardrail, Reson8, ElevenLabs, and Cartesia failure modes. + ## [3.0.0] - 2026-10-08 ### Breaking Changes - **`ToolPinnedConflictResponseDtoError`** and the standalone **`ToolPinnedConflictResponseDto.error`** field have been removed from the SDK. The API still returns `error: "tool_pinned"` in pinned-tool HTTP 409 responses. After validating or narrowing the error body, use **`Vapi.ConflictErrorBody`** or **`Vapi.ConflictErrorBody.ToolPinned`** to read its `error` discriminator. Replace the removed constant with the literal `"tool_pinned"`. The `message` field contains the human-readable reason and does not replace the discriminator. diff --git a/package.json b/package.json index 66484ad9..1a1161b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@vapi-ai/server-sdk", - "version": "3.0.0", + "version": "4.0.0", "private": false, "repository": { "type": "git", @@ -253,6 +253,28 @@ }, "default": "./dist/cjs/api/resources/observabilityScorecard/exports.js" }, + "./guardrailRules": { + "import": { + "types": "./dist/esm/api/resources/guardrailRules/exports.d.mts", + "default": "./dist/esm/api/resources/guardrailRules/exports.mjs" + }, + "require": { + "types": "./dist/cjs/api/resources/guardrailRules/exports.d.ts", + "default": "./dist/cjs/api/resources/guardrailRules/exports.js" + }, + "default": "./dist/cjs/api/resources/guardrailRules/exports.js" + }, + "./guardrailPacks": { + "import": { + "types": "./dist/esm/api/resources/guardrailPacks/exports.d.mts", + "default": "./dist/esm/api/resources/guardrailPacks/exports.mjs" + }, + "require": { + "types": "./dist/cjs/api/resources/guardrailPacks/exports.d.ts", + "default": "./dist/cjs/api/resources/guardrailPacks/exports.js" + }, + "default": "./dist/cjs/api/resources/guardrailPacks/exports.js" + }, "./providerResources": { "import": { "types": "./dist/esm/api/resources/providerResources/exports.d.mts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df56adf3..1dc9355f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,12 +159,12 @@ packages: resolution: {integrity: sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@1.2.5': - resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} + '@napi-rs/wasm-runtime@1.2.7': + resolution: {integrity: sha512-zJccwplOAbgfZju95IUHazLnx9RAPtPN2YGJXI6UbrgeaR9QfPjGrQL6ERkSAtnVCA4Q+83ApGyaX5zdpCaKkQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 - '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/core': ^1.7.1 || 2.0.0-beta.2 || 2.0.0-beta.3 + '@emnapi/runtime': ^1.7.1 || 2.0.0-beta.2 || 2.0.0-beta.3 '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -886,8 +886,8 @@ packages: typescript: '*' webpack: ^5.0.0 - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tslib@2.9.1: + resolution: {integrity: sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==} type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} @@ -1080,17 +1080,17 @@ snapshots: '@emnapi/core@1.11.3': dependencies: '@emnapi/wasi-threads': 1.2.3 - tslib: 2.8.1 + tslib: 2.9.1 optional: true '@emnapi/runtime@1.11.3': dependencies: - tslib: 2.8.1 + tslib: 2.9.1 optional: true '@emnapi/wasi-threads@1.2.3': dependencies: - tslib: 2.8.1 + tslib: 2.9.1 optional: true '@inquirer/ansi@1.0.2': {} @@ -1149,7 +1149,7 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + '@napi-rs/wasm-runtime@1.2.7(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 @@ -1205,7 +1205,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.7(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -1223,7 +1223,7 @@ snapshots: '@tybys/wasm-util@0.10.4': dependencies: - tslib: 2.8.1 + tslib: 2.9.1 optional: true '@types/chai@5.2.3': @@ -1787,7 +1787,7 @@ snapshots: typescript: 5.9.3 webpack: 5.105.4 - tslib@2.8.1: + tslib@2.9.1: optional: true type-fest@4.41.0: {} diff --git a/reference.md b/reference.md index ac1d1ef7..23635299 100644 --- a/reference.md +++ b/reference.md @@ -122,57 +122,6 @@ await client.assistants.create({}); - - - - -
client.assistants.assistantControllerValidateBackgroundSoundUrl({ ...params }) -> Vapi.BackgroundSoundUrlValidationResult -
-
- -#### 🔌 Usage - -
-
- -
-
- -```typescript -await client.assistants.assistantControllerValidateBackgroundSoundUrl({ - url: "https://example.com/my-sound.mp3" -}); - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**request:** `Vapi.ValidateBackgroundSoundUrlDto` - -
-
- -
-
- -**requestOptions:** `AssistantsClient.RequestOptions` - -
-
-
-
- -
@@ -2544,7 +2493,7 @@ await client.sessions.update({
-The append-only history of an assistant's allocations, newest first. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. +The append-only history of an assistant's allocations, newest first.
@@ -2607,7 +2556,7 @@ await client.trafficAllocations.trafficAllocationControllerFindAllPaginated();
-Creates a new traffic allocation for an assistant, replacing the one currently in effect. To start or adjust a split, send targets naming published versions (such as "v7") with percentages totaling 100; allocationIntent is inferred as 'explicit'. To stop splitting and send every call to the newest published version, send allocationIntent 'follow-latest' with no targets field; stopping always names its intent, so a dropped targets field can never end a split by accident. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. +Creates a new traffic allocation for an assistant, replacing the one currently in effect. To start or adjust a split, send targets naming published versions (such as "v7") with percentages totaling 100; allocationIntent is inferred as 'explicit'. To stop splitting and send every call to the newest published version, send allocationIntent 'follow-latest' with no targets field; stopping always names its intent, so a dropped targets field can never end a split by accident.
@@ -2672,7 +2621,7 @@ await client.trafficAllocations.trafficAllocationControllerCreate({
-The allocation currently in effect for the assistant, with its targets. The response carries no allocation field when traffic splitting has never been configured. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. +The allocation currently in effect for the assistant, with its targets. The response carries no allocation field when traffic splitting has never been configured.
@@ -2721,6 +2670,73 @@ await client.trafficAllocations.trafficAllocationControllerLatestGet({ + + + + +
client.trafficAllocations.trafficAllocationControllerMetricsGet({ ...params }) -> Vapi.TrafficTabMetricsDto +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Per-assistant-version call metrics over a time window: call counts, configured vs actual traffic share, duration, cost per minute, latency, ended reasons, a bucketed timeseries, and optional structured output aggregations. Calls with no assistant version are reported as an 'unversioned' row. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.trafficAllocations.trafficAllocationControllerMetricsGet({ + assistantId: "assistantId", + from: "2024-01-15T09:30:00Z", + to: "2024-01-15T09:30:00Z" +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.TrafficAllocationControllerMetricsGetRequest` + +
+
+ +
+
+ +**requestOptions:** `TrafficAllocationsClient.RequestOptions` + +
+
+
+
+ +
@@ -2737,7 +2753,7 @@ await client.trafficAllocations.trafficAllocationControllerLatestGet({
-Returns a single allocation by id, including its targets and actor attribution. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. +Returns a single allocation by id, including its targets and actor attribution.
@@ -5606,7 +5622,7 @@ await client.simulationRuns.simulationRunControllerCancelGroup({ -
client.simulationRuns.simulationRunControllerFindItems({ ...params }) -> Vapi.SimulationRunItem[] +
client.simulationRuns.simulationRunControllerFindItems({ ...params }) -> Vapi.SimulationRunControllerFindItemsResponse
@@ -5871,7 +5887,7 @@ await client.simulationRuns.simulationRunControllerGenerateSuggestions({
## SimulationSuites -
client.simulationSuites.simulationSuiteControllerFindAll({ ...params }) -> Vapi.SimulationSuite[] +
client.simulationSuites.simulationSuiteControllerFindAll({ ...params }) -> Vapi.SimulationSuiteControllerFindAllResponse
@@ -6246,8 +6262,7 @@ await client.simulationSuites.simulationSuiteControllerUpdate({
-## Simulations -
client.simulations.simulationGenerateControllerGenerate({ ...params }) -> Vapi.GenerateScenariosResponse +
client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ ...params }) -> Vapi.SimulationOnboardingRequirementsDraftDto
@@ -6259,7 +6274,11 @@ await client.simulationSuites.simulationSuiteControllerUpdate({
-Generates scenarios for an assistant or squad by analyzing its configuration with AI. +Generate draft test requirements from an assistant's prompt, tools, and handoff configuration. The response includes numbered requirements describing expected behavior and open questions about behavior that needs clarification. Use this endpoint before generating a simulation suite. + +Review the requirements and resolve any open questions. To revise a draft, send it as `previousDraft` together with natural-language `feedback` describing the changes or answers. Once the requirements are ready, pass them to `POST /eval/simulation/onboarding/suite`. + +Requests can take up to 2 minutes. Each organization can draft requirements 60 times per UTC day, shared with the dashboard. A 429 `SIMULATION_ONBOARDING_QUOTA_EXCEEDED` response means the daily limit has been reached. Wait until the limit resets at 00:00 UTC before retrying.
@@ -6274,7 +6293,9 @@ Generates scenarios for an assistant or squad by analyzing its configuration wit
```typescript -await client.simulations.simulationGenerateControllerGenerate(); +await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId" +}); ```
@@ -6290,7 +6311,7 @@ await client.simulations.simulationGenerateControllerGenerate();
-**request:** `Vapi.GenerateScenariosDto` +**request:** `Vapi.SimulationOnboardingRequirementsCreateDto`
@@ -6298,7 +6319,160 @@ await client.simulations.simulationGenerateControllerGenerate();
-**requestOptions:** `SimulationsClient.RequestOptions` +**requestOptions:** `SimulationSuitesClient.RequestOptions` + +
+
+ +
+ + + + +
+ +
client.simulationSuites.simulationOnboardingControllerSuiteCreate({ ...params }) -> Vapi.SimulationOnboardingSuiteViewDto +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Generate and save a simulation suite from reviewed test requirements, and assign it to an assistant. First draft requirements with `POST /eval/simulation/onboarding/requirements`. The response includes the saved suite, its simulations, and requirement coverage, including any gaps. + +Requests can take up to 3 minutes. Set a client timeout of at least 200 seconds. + +Use a unique `idempotencyKey` for each suite generation request. Retrying with the same key does not create a duplicate suite: +- On a timeout or a 5xx (502, 504, 524), retry with the same key. You get the saved suite, a 409 while it is still generating, or a fresh generation if the first one never saved. +- On a 409 `SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS`, the first request is still generating. Wait `Retry-After` seconds (15) and retry with the same key. +- On a 409 `SIMULATION_ONBOARDING_IDEMPOTENCY_KEY_REUSED`, the key was used for a different assistant or requirements. Send a new key. + +Review the generated simulations and coverage gaps. Revise the suite with `PATCH /eval/simulation/onboarding/suite/{suiteId}`, then run it with `POST /eval/simulation/run`. + +Each organization can generate 20 suites per UTC day, shared with the dashboard, and 2 at a time. A retry that returns a saved suite does not count toward these limits. On a 429 `SIMULATION_ONBOARDING_CONCURRENCY_LIMITED`, wait `Retry-After` seconds (30) before retrying. On a 429 `SIMULATION_ONBOARDING_QUOTA_EXCEEDED`, wait until the daily limit resets at 00:00 UTC before retrying. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "idempotencyKey", + requirements: [{ + id: "id", + text: "text" + }] +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.SimulationOnboardingSuiteCreateDto` + +
+
+ +
+
+ +**requestOptions:** `SimulationSuitesClient.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ ...params }) -> Vapi.SimulationOnboardingSuiteViewDto +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Revise a suite created by `POST /eval/simulation/onboarding/suite`. Remove simulations, rewrite scenarios using natural-language instructions, or set `retryFailed` to regenerate scenarios that failed or exceeded generation limits. The response includes the updated suite and requirement coverage. + +Requests can take up to 2 minutes. + +Send a new `patchKey` for each edit. Replaying an applied key changes nothing and returns the current suite, with `failedEditSimulationIds` listing the simulations that edit could not rewrite, so retry a timeout or a 5xx with the same key. A suite remembers its last 50 keys, so never reuse one. + +Each organization can make 60 edits per UTC day, shared with the dashboard. Requests that only remove simulations and replays of applied edits do not count toward this limit. On a 429 `SIMULATION_ONBOARDING_QUOTA_EXCEEDED`, wait until the daily limit resets at 00:00 UTC before retrying. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "patchKey" +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.SimulationOnboardingSuiteUpdateDto` + +
+
+ +
+
+ +**requestOptions:** `SimulationSuitesClient.RequestOptions`
@@ -6310,6 +6484,7 @@ await client.simulations.simulationGenerateControllerGenerate();
+## Simulations
client.simulations.simulationControllerFindAll({ ...params }) -> Vapi.Simulation[]
@@ -8372,6 +8547,306 @@ await client.observabilityScorecard.scorecardControllerCreate({
+ + +
+ +## GuardrailRules +
client.guardrailRules.guardrailRulesControllerList({ ...params }) -> Vapi.GuardrailRule[] +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.guardrailRules.guardrailRulesControllerList(); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.GuardrailRulesControllerListRequest` + +
+
+ +
+
+ +**requestOptions:** `GuardrailRulesClient.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.guardrailRules.guardrailRulesControllerPaginated({ ...params }) -> Vapi.GuardrailRulesPage +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.guardrailRules.guardrailRulesControllerPaginated(); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.GuardrailRulesControllerPaginatedRequest` + +
+
+ +
+
+ +**requestOptions:** `GuardrailRulesClient.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.guardrailRules.guardrailRulesControllerFind({ ...params }) -> Vapi.GuardrailRule +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.guardrailRules.guardrailRulesControllerFind({ + id: "id" +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.GuardrailRulesControllerFindRequest` + +
+
+ +
+
+ +**requestOptions:** `GuardrailRulesClient.RequestOptions` + +
+
+
+
+ + +
+
+
+ +## GuardrailPacks +
client.guardrailPacks.guardrailPacksControllerList({ ...params }) -> Vapi.GuardrailPack[] +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.guardrailPacks.guardrailPacksControllerList(); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.GuardrailPacksControllerListRequest` + +
+
+ +
+
+ +**requestOptions:** `GuardrailPacksClient.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.guardrailPacks.guardrailPacksControllerPaginated({ ...params }) -> Vapi.GuardrailPacksPage +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.guardrailPacks.guardrailPacksControllerPaginated(); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.GuardrailPacksControllerPaginatedRequest` + +
+
+ +
+
+ +**requestOptions:** `GuardrailPacksClient.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.guardrailPacks.guardrailPacksControllerFind({ ...params }) -> Vapi.GuardrailPack +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.guardrailPacks.guardrailPacksControllerFind({ + id: "id" +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Vapi.GuardrailPacksControllerFindRequest` + +
+
+ +
+
+ +**requestOptions:** `GuardrailPacksClient.RequestOptions` + +
+
+
+
+ +
diff --git a/src/BaseClient.ts b/src/BaseClient.ts index c6b5e276..310afbc7 100644 --- a/src/BaseClient.ts +++ b/src/BaseClient.ts @@ -52,8 +52,8 @@ export function normalizeClientOptions { - return core.HttpResponsePromise.fromPromise( - this.__assistantControllerValidateBackgroundSoundUrl(request, requestOptions), - ); - } - - private async __assistantControllerValidateBackgroundSoundUrl( - request: Vapi.ValidateBackgroundSoundUrlDto, - requestOptions?: AssistantsClient.RequestOptions, - ): Promise> { - const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); - const _headers: core.Fetcher.Args["headers"] = mergeHeaders( - _authRequest.headers, - this._options?.headers, - 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, - "assistant/background-sound/validate", - ), - 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 Vapi.BackgroundSoundUrlValidationResult, - rawResponse: _response.rawResponse, - }; - } - - if (_response.error.reason === "status-code") { - throw new errors.VapiError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); - } - - return handleNonStatusCodeError( - _response.error, - _response.rawResponse, - "POST", - "/assistant/background-sound/validate", - ); - } - /** * Returns the assistant identified by its ID. * @@ -364,6 +294,8 @@ export class AssistantsClient { * @param {Vapi.UpdateAssistantDto} request * @param {AssistantsClient.RequestOptions} requestOptions - Request-specific configuration. * + * @throws {@link Vapi.ConflictError} + * * @example * await client.assistants.update({ * id: "id" @@ -411,11 +343,16 @@ export class AssistantsClient { } if (_response.error.reason === "status-code") { - throw new errors.VapiError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); + switch (_response.error.statusCode) { + case 409: + throw new Vapi.ConflictError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } } return handleNonStatusCodeError(_response.error, _response.rawResponse, "PATCH", "/assistant/{id}"); diff --git a/src/api/resources/assistants/client/requests/UpdateAssistantDto.ts b/src/api/resources/assistants/client/requests/UpdateAssistantDto.ts index c140a5f6..8704c997 100644 --- a/src/api/resources/assistants/client/requests/UpdateAssistantDto.ts +++ b/src/api/resources/assistants/client/requests/UpdateAssistantDto.ts @@ -53,6 +53,7 @@ export interface UpdateAssistantDto { maxDurationSeconds?: number; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.UpdateAssistantDtoBackgroundSound; @@ -86,11 +87,7 @@ export interface UpdateAssistantDto { * If unspecified, it will hang up. */ voicemailMessage?: string; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[]; diff --git a/src/api/resources/assistants/client/requests/index.ts b/src/api/resources/assistants/client/requests/index.ts index b095d9f4..17898b95 100644 --- a/src/api/resources/assistants/client/requests/index.ts +++ b/src/api/resources/assistants/client/requests/index.ts @@ -2,4 +2,3 @@ export type { DeleteAssistantsRequest } from "./DeleteAssistantsRequest.js"; export type { GetAssistantsRequest } from "./GetAssistantsRequest.js"; export type { ListAssistantsRequest } from "./ListAssistantsRequest.js"; export type { UpdateAssistantDto } from "./UpdateAssistantDto.js"; -export type { ValidateBackgroundSoundUrlDto } from "./ValidateBackgroundSoundUrlDto.js"; diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSound.ts b/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSound.ts index 9aea8ab2..4f0bfffc 100644 --- a/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSound.ts +++ b/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../../../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type UpdateAssistantDtoBackgroundSound = Vapi.UpdateAssistantDtoBackgroundSoundZero | string; diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSoundZero.ts b/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSoundZero.ts index fd216fa7..26b5d60c 100644 --- a/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSoundZero.ts +++ b/src/api/resources/assistants/types/UpdateAssistantDtoBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const UpdateAssistantDtoBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type UpdateAssistantDtoBackgroundSoundZero = (typeof UpdateAssistantDtoBackgroundSoundZero)[keyof typeof UpdateAssistantDtoBackgroundSoundZero]; diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts b/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts index 32cfa33b..5b7a5c93 100644 --- a/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts +++ b/src/api/resources/assistants/types/UpdateAssistantDtoCredentialsItem.ts @@ -50,6 +50,7 @@ export type UpdateAssistantDtoCredentialsItem = | Vapi.UpdateAssistantDtoCredentialsItem.Mistral | Vapi.UpdateAssistantDtoCredentialsItem.Speechmatics | Vapi.UpdateAssistantDtoCredentialsItem.Soniox + | Vapi.UpdateAssistantDtoCredentialsItem.Reson8 | Vapi.UpdateAssistantDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.UpdateAssistantDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.UpdateAssistantDtoCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace UpdateAssistantDtoCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace UpdateAssistantDtoCredentialsItem { | Vapi.UpdateAssistantDtoCredentialsItem.Mistral | Vapi.UpdateAssistantDtoCredentialsItem.Speechmatics | Vapi.UpdateAssistantDtoCredentialsItem.Soniox + | Vapi.UpdateAssistantDtoCredentialsItem.Reson8 | Vapi.UpdateAssistantDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.UpdateAssistantDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.UpdateAssistantDtoCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoTranscriber.ts b/src/api/resources/assistants/types/UpdateAssistantDtoTranscriber.ts index a86f57f5..133b67f8 100644 --- a/src/api/resources/assistants/types/UpdateAssistantDtoTranscriber.ts +++ b/src/api/resources/assistants/types/UpdateAssistantDtoTranscriber.ts @@ -19,6 +19,7 @@ export type UpdateAssistantDtoTranscriber = | Vapi.UpdateAssistantDtoTranscriber.Cartesia | Vapi.UpdateAssistantDtoTranscriber.Soniox | Vapi.UpdateAssistantDtoTranscriber.Xai + | Vapi.UpdateAssistantDtoTranscriber.Reson8 | Vapi.UpdateAssistantDtoTranscriber.Vapi; export namespace UpdateAssistantDtoTranscriber { @@ -74,6 +75,10 @@ export namespace UpdateAssistantDtoTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts b/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts index f3250958..d4eeb443 100644 --- a/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts +++ b/src/api/resources/assistants/types/UpdateAssistantDtoVoice.ts @@ -19,7 +19,6 @@ export type UpdateAssistantDtoVoice = | Vapi.UpdateAssistantDtoVoice.Wellsaid | Vapi.UpdateAssistantDtoVoice.RimeAi | Vapi.UpdateAssistantDtoVoice.SmallestAi - | Vapi.UpdateAssistantDtoVoice.Tavus | Vapi.UpdateAssistantDtoVoice.Vapi | Vapi.UpdateAssistantDtoVoice.Sesame | Vapi.UpdateAssistantDtoVoice.Inworld @@ -80,10 +79,6 @@ export namespace UpdateAssistantDtoVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/resources/calls/client/requests/CreateCallDto.ts b/src/api/resources/calls/client/requests/CreateCallDto.ts index 2674d1ba..44f76088 100644 --- a/src/api/resources/calls/client/requests/CreateCallDto.ts +++ b/src/api/resources/calls/client/requests/CreateCallDto.ts @@ -46,7 +46,7 @@ export interface CreateCallDto { * - Squad, use `squad` * - Workflow, use `workflow` */ - assistant?: Vapi.CreateAssistantDto; + assistant?: Vapi.TransientAssistantDto; /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */ assistantOverrides?: Vapi.AssistantOverrides; /** diff --git a/src/api/resources/chats/client/requests/CreateChatDto.ts b/src/api/resources/chats/client/requests/CreateChatDto.ts index 931b2b6a..7a0f389e 100644 --- a/src/api/resources/chats/client/requests/CreateChatDto.ts +++ b/src/api/resources/chats/client/requests/CreateChatDto.ts @@ -12,7 +12,7 @@ export interface CreateChatDto { /** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */ assistantId?: string; /** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */ - assistant?: Vapi.CreateAssistantDto; + assistant?: Vapi.TransientAssistantDto; /** * These are the variable values that will be used to replace template variables in the assistant messages. * Only variable substitution is supported in chat contexts - other assistant properties cannot be overridden. diff --git a/src/api/resources/chats/client/requests/OpenAiResponsesRequest.ts b/src/api/resources/chats/client/requests/OpenAiResponsesRequest.ts index 6262f09e..4e8fd4db 100644 --- a/src/api/resources/chats/client/requests/OpenAiResponsesRequest.ts +++ b/src/api/resources/chats/client/requests/OpenAiResponsesRequest.ts @@ -12,7 +12,7 @@ export interface OpenAiResponsesRequest { /** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */ assistantId?: string; /** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */ - assistant?: Vapi.CreateAssistantDto; + assistant?: Vapi.TransientAssistantDto; /** * These are the variable values that will be used to replace template variables in the assistant messages. * Only variable substitution is supported in chat contexts - other assistant properties cannot be overridden. diff --git a/src/api/resources/guardrailPacks/client/Client.ts b/src/api/resources/guardrailPacks/client/Client.ts new file mode 100644 index 00000000..2779ad2a --- /dev/null +++ b/src/api/resources/guardrailPacks/client/Client.ts @@ -0,0 +1,246 @@ +// This file was auto-generated by Fern from our API Definition. + +import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js"; +import { type NormalizedClientOptionsWithAuth, normalizeClientOptionsWithAuth } from "../../../../BaseClient.js"; +import { mergeHeaders } from "../../../../core/headers.js"; +import * as core from "../../../../core/index.js"; +import * as environments from "../../../../environments.js"; +import { handleNonStatusCodeError } from "../../../../errors/handleNonStatusCodeError.js"; +import * as errors from "../../../../errors/index.js"; +import type * as Vapi from "../../../index.js"; + +export declare namespace GuardrailPacksClient { + export type Options = BaseClientOptions; + + export interface RequestOptions extends BaseRequestOptions {} +} + +export class GuardrailPacksClient { + protected readonly _options: NormalizedClientOptionsWithAuth; + + constructor(options: GuardrailPacksClient.Options) { + this._options = normalizeClientOptionsWithAuth(options); + } + + /** + * @param {Vapi.GuardrailPacksControllerListRequest} request + * @param {GuardrailPacksClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.guardrailPacks.guardrailPacksControllerList() + */ + public guardrailPacksControllerList( + request: Vapi.GuardrailPacksControllerListRequest = {}, + requestOptions?: GuardrailPacksClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__guardrailPacksControllerList(request, requestOptions)); + } + + private async __guardrailPacksControllerList( + request: Vapi.GuardrailPacksControllerListRequest = {}, + requestOptions?: GuardrailPacksClient.RequestOptions, + ): Promise> { + const { + limit, + search, + createdAtGt, + createdAtLt, + createdAtGe, + createdAtLe, + updatedAtGt, + updatedAtLt, + updatedAtGe, + updatedAtLe, + } = request; + const _queryParams: Record = { + limit, + search, + createdAtGt: createdAtGt != null ? createdAtGt : undefined, + createdAtLt: createdAtLt != null ? createdAtLt : undefined, + createdAtGe: createdAtGe != null ? createdAtGe : undefined, + createdAtLe: createdAtLe != null ? createdAtLe : undefined, + updatedAtGt: updatedAtGt != null ? updatedAtGt : undefined, + updatedAtLt: updatedAtLt != null ? updatedAtLt : undefined, + updatedAtGe: updatedAtGe != null ? updatedAtGe : undefined, + updatedAtLe: updatedAtLe != null ? updatedAtLe : undefined, + }; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "guardrail/packs", + ), + 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: _response.body as Vapi.GuardrailPack[], rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/guardrail/packs"); + } + + /** + * @param {Vapi.GuardrailPacksControllerPaginatedRequest} request + * @param {GuardrailPacksClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.guardrailPacks.guardrailPacksControllerPaginated() + */ + public guardrailPacksControllerPaginated( + request: Vapi.GuardrailPacksControllerPaginatedRequest = {}, + requestOptions?: GuardrailPacksClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__guardrailPacksControllerPaginated(request, requestOptions)); + } + + private async __guardrailPacksControllerPaginated( + request: Vapi.GuardrailPacksControllerPaginatedRequest = {}, + requestOptions?: GuardrailPacksClient.RequestOptions, + ): Promise> { + const { + limit, + search, + sortBy, + createdAtGt, + createdAtLt, + createdAtGe, + createdAtLe, + updatedAtGt, + updatedAtLt, + updatedAtGe, + updatedAtLe, + page, + sortOrder, + } = request; + const _queryParams: Record = { + limit, + search, + sortBy: sortBy != null ? sortBy : undefined, + createdAtGt: createdAtGt != null ? createdAtGt : undefined, + createdAtLt: createdAtLt != null ? createdAtLt : undefined, + createdAtGe: createdAtGe != null ? createdAtGe : undefined, + createdAtLe: createdAtLe != null ? createdAtLe : undefined, + updatedAtGt: updatedAtGt != null ? updatedAtGt : undefined, + updatedAtLt: updatedAtLt != null ? updatedAtLt : undefined, + updatedAtGe: updatedAtGe != null ? updatedAtGe : undefined, + updatedAtLe: updatedAtLe != null ? updatedAtLe : undefined, + page, + sortOrder: sortOrder != null ? sortOrder : undefined, + }; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "guardrail/packs/paginated", + ), + 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: _response.body as Vapi.GuardrailPacksPage, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/guardrail/packs/paginated"); + } + + /** + * @param {Vapi.GuardrailPacksControllerFindRequest} request + * @param {GuardrailPacksClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.guardrailPacks.guardrailPacksControllerFind({ + * id: "id" + * }) + */ + public guardrailPacksControllerFind( + request: Vapi.GuardrailPacksControllerFindRequest, + requestOptions?: GuardrailPacksClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__guardrailPacksControllerFind(request, requestOptions)); + } + + private async __guardrailPacksControllerFind( + request: Vapi.GuardrailPacksControllerFindRequest, + requestOptions?: GuardrailPacksClient.RequestOptions, + ): Promise> { + const { id } = request; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + `guardrail/packs/${core.url.encodePathParam(id)}`, + ), + method: "GET", + 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.GuardrailPack, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/guardrail/packs/{id}"); + } +} diff --git a/src/api/resources/guardrailPacks/client/index.ts b/src/api/resources/guardrailPacks/client/index.ts new file mode 100644 index 00000000..195f9aa8 --- /dev/null +++ b/src/api/resources/guardrailPacks/client/index.ts @@ -0,0 +1 @@ +export * from "./requests/index.js"; diff --git a/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerFindRequest.ts b/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerFindRequest.ts new file mode 100644 index 00000000..0d983612 --- /dev/null +++ b/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerFindRequest.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * { + * id: "id" + * } + */ +export interface GuardrailPacksControllerFindRequest { + /** The unique identifier for the resource. */ + id: string; +} diff --git a/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerListRequest.ts b/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerListRequest.ts new file mode 100644 index 00000000..4ecbaa12 --- /dev/null +++ b/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerListRequest.ts @@ -0,0 +1,28 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * {} + */ +export interface GuardrailPacksControllerListRequest { + /** Positive bounded list size, matching the shared library reader. */ + limit?: number; + /** Case-insensitive name or identifier fragment; omitted means all resources. */ + search?: string; + /** 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/guardrailPacks/client/requests/GuardrailPacksControllerPaginatedRequest.ts b/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerPaginatedRequest.ts new file mode 100644 index 00000000..5bf1b8a8 --- /dev/null +++ b/src/api/resources/guardrailPacks/client/requests/GuardrailPacksControllerPaginatedRequest.ts @@ -0,0 +1,35 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../../index.js"; + +/** + * @example + * {} + */ +export interface GuardrailPacksControllerPaginatedRequest { + limit?: number; + /** Case-insensitive name or identifier fragment; omitted means all resources. */ + search?: string; + /** Only persisted creation order is supported, with the ID as a stable tie-breaker. */ + sortBy?: Vapi.GuardrailPacksControllerPaginatedRequestSortBy; + /** 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; + /** A safe integer page; the reader also validates the computed offset. */ + page?: number; + /** This is the sort order for pagination. Defaults to 'DESC'. */ + sortOrder?: Vapi.GuardrailPacksControllerPaginatedRequestSortOrder; +} diff --git a/src/api/resources/guardrailPacks/client/requests/index.ts b/src/api/resources/guardrailPacks/client/requests/index.ts new file mode 100644 index 00000000..bcc14f76 --- /dev/null +++ b/src/api/resources/guardrailPacks/client/requests/index.ts @@ -0,0 +1,3 @@ +export type { GuardrailPacksControllerFindRequest } from "./GuardrailPacksControllerFindRequest.js"; +export type { GuardrailPacksControllerListRequest } from "./GuardrailPacksControllerListRequest.js"; +export type { GuardrailPacksControllerPaginatedRequest } from "./GuardrailPacksControllerPaginatedRequest.js"; diff --git a/src/api/resources/guardrailPacks/exports.ts b/src/api/resources/guardrailPacks/exports.ts new file mode 100644 index 00000000..f1c4ba9b --- /dev/null +++ b/src/api/resources/guardrailPacks/exports.ts @@ -0,0 +1,4 @@ +// This file was auto-generated by Fern from our API Definition. + +export { GuardrailPacksClient } from "./client/Client.js"; +export * from "./client/index.js"; diff --git a/src/api/resources/guardrailPacks/index.ts b/src/api/resources/guardrailPacks/index.ts new file mode 100644 index 00000000..d9adb1af --- /dev/null +++ b/src/api/resources/guardrailPacks/index.ts @@ -0,0 +1,2 @@ +export * from "./client/index.js"; +export * from "./types/index.js"; diff --git a/src/api/resources/guardrailPacks/types/GuardrailPacksControllerPaginatedRequestSortBy.ts b/src/api/resources/guardrailPacks/types/GuardrailPacksControllerPaginatedRequestSortBy.ts new file mode 100644 index 00000000..b520af5e --- /dev/null +++ b/src/api/resources/guardrailPacks/types/GuardrailPacksControllerPaginatedRequestSortBy.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailPacksControllerPaginatedRequestSortBy = { + CreatedAt: "createdAt", +} as const; +export type GuardrailPacksControllerPaginatedRequestSortBy = + (typeof GuardrailPacksControllerPaginatedRequestSortBy)[keyof typeof GuardrailPacksControllerPaginatedRequestSortBy]; diff --git a/src/api/resources/guardrailPacks/types/GuardrailPacksControllerPaginatedRequestSortOrder.ts b/src/api/resources/guardrailPacks/types/GuardrailPacksControllerPaginatedRequestSortOrder.ts new file mode 100644 index 00000000..b242d525 --- /dev/null +++ b/src/api/resources/guardrailPacks/types/GuardrailPacksControllerPaginatedRequestSortOrder.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailPacksControllerPaginatedRequestSortOrder = { + Asc: "ASC", + Desc: "DESC", +} as const; +export type GuardrailPacksControllerPaginatedRequestSortOrder = + (typeof GuardrailPacksControllerPaginatedRequestSortOrder)[keyof typeof GuardrailPacksControllerPaginatedRequestSortOrder]; diff --git a/src/api/resources/guardrailPacks/types/index.ts b/src/api/resources/guardrailPacks/types/index.ts new file mode 100644 index 00000000..8e7d15e6 --- /dev/null +++ b/src/api/resources/guardrailPacks/types/index.ts @@ -0,0 +1,2 @@ +export * from "./GuardrailPacksControllerPaginatedRequestSortBy.js"; +export * from "./GuardrailPacksControllerPaginatedRequestSortOrder.js"; diff --git a/src/api/resources/guardrailRules/client/Client.ts b/src/api/resources/guardrailRules/client/Client.ts new file mode 100644 index 00000000..c1a893ad --- /dev/null +++ b/src/api/resources/guardrailRules/client/Client.ts @@ -0,0 +1,250 @@ +// This file was auto-generated by Fern from our API Definition. + +import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js"; +import { type NormalizedClientOptionsWithAuth, normalizeClientOptionsWithAuth } from "../../../../BaseClient.js"; +import { mergeHeaders } from "../../../../core/headers.js"; +import * as core from "../../../../core/index.js"; +import * as environments from "../../../../environments.js"; +import { handleNonStatusCodeError } from "../../../../errors/handleNonStatusCodeError.js"; +import * as errors from "../../../../errors/index.js"; +import type * as Vapi from "../../../index.js"; + +export declare namespace GuardrailRulesClient { + export type Options = BaseClientOptions; + + export interface RequestOptions extends BaseRequestOptions {} +} + +export class GuardrailRulesClient { + protected readonly _options: NormalizedClientOptionsWithAuth; + + constructor(options: GuardrailRulesClient.Options) { + this._options = normalizeClientOptionsWithAuth(options); + } + + /** + * @param {Vapi.GuardrailRulesControllerListRequest} request + * @param {GuardrailRulesClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.guardrailRules.guardrailRulesControllerList() + */ + public guardrailRulesControllerList( + request: Vapi.GuardrailRulesControllerListRequest = {}, + requestOptions?: GuardrailRulesClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__guardrailRulesControllerList(request, requestOptions)); + } + + private async __guardrailRulesControllerList( + request: Vapi.GuardrailRulesControllerListRequest = {}, + requestOptions?: GuardrailRulesClient.RequestOptions, + ): Promise> { + const { + limit, + search, + packId, + createdAtGt, + createdAtLt, + createdAtGe, + createdAtLe, + updatedAtGt, + updatedAtLt, + updatedAtGe, + updatedAtLe, + } = request; + const _queryParams: Record = { + limit, + search, + packId, + createdAtGt: createdAtGt != null ? createdAtGt : undefined, + createdAtLt: createdAtLt != null ? createdAtLt : undefined, + createdAtGe: createdAtGe != null ? createdAtGe : undefined, + createdAtLe: createdAtLe != null ? createdAtLe : undefined, + updatedAtGt: updatedAtGt != null ? updatedAtGt : undefined, + updatedAtLt: updatedAtLt != null ? updatedAtLt : undefined, + updatedAtGe: updatedAtGe != null ? updatedAtGe : undefined, + updatedAtLe: updatedAtLe != null ? updatedAtLe : undefined, + }; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "guardrail/rules", + ), + 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: _response.body as Vapi.GuardrailRule[], rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/guardrail/rules"); + } + + /** + * @param {Vapi.GuardrailRulesControllerPaginatedRequest} request + * @param {GuardrailRulesClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.guardrailRules.guardrailRulesControllerPaginated() + */ + public guardrailRulesControllerPaginated( + request: Vapi.GuardrailRulesControllerPaginatedRequest = {}, + requestOptions?: GuardrailRulesClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__guardrailRulesControllerPaginated(request, requestOptions)); + } + + private async __guardrailRulesControllerPaginated( + request: Vapi.GuardrailRulesControllerPaginatedRequest = {}, + requestOptions?: GuardrailRulesClient.RequestOptions, + ): Promise> { + const { + limit, + search, + packId, + sortBy, + createdAtGt, + createdAtLt, + createdAtGe, + createdAtLe, + updatedAtGt, + updatedAtLt, + updatedAtGe, + updatedAtLe, + page, + sortOrder, + } = request; + const _queryParams: Record = { + limit, + search, + packId, + sortBy: sortBy != null ? sortBy : undefined, + createdAtGt: createdAtGt != null ? createdAtGt : undefined, + createdAtLt: createdAtLt != null ? createdAtLt : undefined, + createdAtGe: createdAtGe != null ? createdAtGe : undefined, + createdAtLe: createdAtLe != null ? createdAtLe : undefined, + updatedAtGt: updatedAtGt != null ? updatedAtGt : undefined, + updatedAtLt: updatedAtLt != null ? updatedAtLt : undefined, + updatedAtGe: updatedAtGe != null ? updatedAtGe : undefined, + updatedAtLe: updatedAtLe != null ? updatedAtLe : undefined, + page, + sortOrder: sortOrder != null ? sortOrder : undefined, + }; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "guardrail/rules/paginated", + ), + 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: _response.body as Vapi.GuardrailRulesPage, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/guardrail/rules/paginated"); + } + + /** + * @param {Vapi.GuardrailRulesControllerFindRequest} request + * @param {GuardrailRulesClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.guardrailRules.guardrailRulesControllerFind({ + * id: "id" + * }) + */ + public guardrailRulesControllerFind( + request: Vapi.GuardrailRulesControllerFindRequest, + requestOptions?: GuardrailRulesClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__guardrailRulesControllerFind(request, requestOptions)); + } + + private async __guardrailRulesControllerFind( + request: Vapi.GuardrailRulesControllerFindRequest, + requestOptions?: GuardrailRulesClient.RequestOptions, + ): Promise> { + const { id } = request; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + `guardrail/rules/${core.url.encodePathParam(id)}`, + ), + method: "GET", + 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.GuardrailRule, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/guardrail/rules/{id}"); + } +} diff --git a/src/api/resources/guardrailRules/client/index.ts b/src/api/resources/guardrailRules/client/index.ts new file mode 100644 index 00000000..195f9aa8 --- /dev/null +++ b/src/api/resources/guardrailRules/client/index.ts @@ -0,0 +1 @@ +export * from "./requests/index.js"; diff --git a/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerFindRequest.ts b/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerFindRequest.ts new file mode 100644 index 00000000..e10a28e5 --- /dev/null +++ b/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerFindRequest.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * { + * id: "id" + * } + */ +export interface GuardrailRulesControllerFindRequest { + /** The unique identifier for the resource. */ + id: string; +} diff --git a/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerListRequest.ts b/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerListRequest.ts new file mode 100644 index 00000000..c6f6d924 --- /dev/null +++ b/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerListRequest.ts @@ -0,0 +1,30 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * {} + */ +export interface GuardrailRulesControllerListRequest { + /** Positive bounded list size, matching the shared library reader. */ + limit?: number; + /** Case-insensitive name or identifier fragment; omitted means all resources. */ + search?: string; + /** Limits rules to a pack in the authenticated organization without per-member requests. */ + packId?: string; + /** 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/guardrailRules/client/requests/GuardrailRulesControllerPaginatedRequest.ts b/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerPaginatedRequest.ts new file mode 100644 index 00000000..a50ae956 --- /dev/null +++ b/src/api/resources/guardrailRules/client/requests/GuardrailRulesControllerPaginatedRequest.ts @@ -0,0 +1,37 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../../index.js"; + +/** + * @example + * {} + */ +export interface GuardrailRulesControllerPaginatedRequest { + limit?: number; + /** Case-insensitive name or identifier fragment; omitted means all resources. */ + search?: string; + /** Limits rules to a pack in the authenticated organization without per-member requests. */ + packId?: string; + /** Only persisted creation order is supported, with the ID as a stable tie-breaker. */ + sortBy?: Vapi.GuardrailRulesControllerPaginatedRequestSortBy; + /** 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; + /** A safe integer page; the reader also validates the computed offset. */ + page?: number; + /** This is the sort order for pagination. Defaults to 'DESC'. */ + sortOrder?: Vapi.GuardrailRulesControllerPaginatedRequestSortOrder; +} diff --git a/src/api/resources/guardrailRules/client/requests/index.ts b/src/api/resources/guardrailRules/client/requests/index.ts new file mode 100644 index 00000000..fb4f04a2 --- /dev/null +++ b/src/api/resources/guardrailRules/client/requests/index.ts @@ -0,0 +1,3 @@ +export type { GuardrailRulesControllerFindRequest } from "./GuardrailRulesControllerFindRequest.js"; +export type { GuardrailRulesControllerListRequest } from "./GuardrailRulesControllerListRequest.js"; +export type { GuardrailRulesControllerPaginatedRequest } from "./GuardrailRulesControllerPaginatedRequest.js"; diff --git a/src/api/resources/guardrailRules/exports.ts b/src/api/resources/guardrailRules/exports.ts new file mode 100644 index 00000000..3d2a2393 --- /dev/null +++ b/src/api/resources/guardrailRules/exports.ts @@ -0,0 +1,4 @@ +// This file was auto-generated by Fern from our API Definition. + +export { GuardrailRulesClient } from "./client/Client.js"; +export * from "./client/index.js"; diff --git a/src/api/resources/guardrailRules/index.ts b/src/api/resources/guardrailRules/index.ts new file mode 100644 index 00000000..d9adb1af --- /dev/null +++ b/src/api/resources/guardrailRules/index.ts @@ -0,0 +1,2 @@ +export * from "./client/index.js"; +export * from "./types/index.js"; diff --git a/src/api/resources/guardrailRules/types/GuardrailRulesControllerPaginatedRequestSortBy.ts b/src/api/resources/guardrailRules/types/GuardrailRulesControllerPaginatedRequestSortBy.ts new file mode 100644 index 00000000..dbf40cae --- /dev/null +++ b/src/api/resources/guardrailRules/types/GuardrailRulesControllerPaginatedRequestSortBy.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailRulesControllerPaginatedRequestSortBy = { + CreatedAt: "createdAt", +} as const; +export type GuardrailRulesControllerPaginatedRequestSortBy = + (typeof GuardrailRulesControllerPaginatedRequestSortBy)[keyof typeof GuardrailRulesControllerPaginatedRequestSortBy]; diff --git a/src/api/resources/guardrailRules/types/GuardrailRulesControllerPaginatedRequestSortOrder.ts b/src/api/resources/guardrailRules/types/GuardrailRulesControllerPaginatedRequestSortOrder.ts new file mode 100644 index 00000000..9affb9f1 --- /dev/null +++ b/src/api/resources/guardrailRules/types/GuardrailRulesControllerPaginatedRequestSortOrder.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailRulesControllerPaginatedRequestSortOrder = { + Asc: "ASC", + Desc: "DESC", +} as const; +export type GuardrailRulesControllerPaginatedRequestSortOrder = + (typeof GuardrailRulesControllerPaginatedRequestSortOrder)[keyof typeof GuardrailRulesControllerPaginatedRequestSortOrder]; diff --git a/src/api/resources/guardrailRules/types/index.ts b/src/api/resources/guardrailRules/types/index.ts new file mode 100644 index 00000000..60c4bfe8 --- /dev/null +++ b/src/api/resources/guardrailRules/types/index.ts @@ -0,0 +1,2 @@ +export * from "./GuardrailRulesControllerPaginatedRequestSortBy.js"; +export * from "./GuardrailRulesControllerPaginatedRequestSortOrder.js"; diff --git a/src/api/resources/index.ts b/src/api/resources/index.ts index 46fb87ec..17cdfb01 100644 --- a/src/api/resources/index.ts +++ b/src/api/resources/index.ts @@ -21,6 +21,12 @@ export * from "./eval/types/index.js"; export * from "./files/client/requests/index.js"; export * as files from "./files/index.js"; export * from "./files/types/index.js"; +export * from "./guardrailPacks/client/requests/index.js"; +export * as guardrailPacks from "./guardrailPacks/index.js"; +export * from "./guardrailPacks/types/index.js"; +export * from "./guardrailRules/client/requests/index.js"; +export * as guardrailRules from "./guardrailRules/index.js"; +export * from "./guardrailRules/types/index.js"; export * from "./insight/client/requests/index.js"; export * as insight from "./insight/index.js"; export * from "./insight/types/index.js"; diff --git a/src/api/resources/sessions/client/requests/CreateSessionDto.ts b/src/api/resources/sessions/client/requests/CreateSessionDto.ts index 973884ab..d41239e3 100644 --- a/src/api/resources/sessions/client/requests/CreateSessionDto.ts +++ b/src/api/resources/sessions/client/requests/CreateSessionDto.ts @@ -19,7 +19,7 @@ export interface CreateSessionDto { * This is the assistant configuration for this session. Use this when creating a new assistant configuration. * If assistantId is provided, this will be ignored. */ - assistant?: Vapi.CreateAssistantDto; + assistant?: Vapi.TransientAssistantDto; /** * These are the overrides for the assistant configuration. * Use this to provide variable values and other overrides when using assistantId. diff --git a/src/api/resources/simulationPersonalities/client/requests/UpdatePersonalityDto.ts b/src/api/resources/simulationPersonalities/client/requests/UpdatePersonalityDto.ts index 563af97a..398b7702 100644 --- a/src/api/resources/simulationPersonalities/client/requests/UpdatePersonalityDto.ts +++ b/src/api/resources/simulationPersonalities/client/requests/UpdatePersonalityDto.ts @@ -14,7 +14,7 @@ export interface UpdatePersonalityDto { /** This is the name of the personality. */ name?: string; /** Complete assistant replacement. Omitted credentials and redacted server secrets are preserved when their endpoint URL is unchanged. Send credentials: [] to clear credentials; omit a server container to remove it. */ - assistant?: Vapi.CreateAssistantDto; + assistant?: Vapi.TransientAssistantDto; /** * Optional folder path for organizing personalities. * Supports up to 3 levels (e.g., "dept/feature/variant"). diff --git a/src/api/resources/simulationRuns/client/Client.ts b/src/api/resources/simulationRuns/client/Client.ts index febcf3b7..d459c211 100644 --- a/src/api/resources/simulationRuns/client/Client.ts +++ b/src/api/resources/simulationRuns/client/Client.ts @@ -2,7 +2,7 @@ import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js"; import { type NormalizedClientOptionsWithAuth, normalizeClientOptionsWithAuth } from "../../../../BaseClient.js"; -import { mergeHeaders } from "../../../../core/headers.js"; +import { mergeHeaders, mergeOnlyDefinedHeaders } from "../../../../core/headers.js"; import * as core from "../../../../core/index.js"; import * as environments from "../../../../environments.js"; import { handleNonStatusCodeError } from "../../../../errors/handleNonStatusCodeError.js"; @@ -43,6 +43,7 @@ export class SimulationRunsClient { requestOptions?: SimulationRunsClient.RequestOptions, ): Promise> { const { + suiteId, status, filterStatus, targetType, @@ -61,6 +62,7 @@ export class SimulationRunsClient { updatedAtLe, } = request; const _queryParams: Record = { + suiteId, status: status != null ? status : undefined, filterStatus: filterStatus != null ? filterStatus : undefined, targetType: targetType != null ? targetType : undefined, @@ -125,6 +127,7 @@ export class SimulationRunsClient { * @param {SimulationRunsClient.RequestOptions} requestOptions - Request-specific configuration. * * @throws {@link Vapi.PaymentRequiredError} + * @throws {@link Vapi.ConflictError} * * @example * await client.simulationRuns.simulationRunControllerCreate({ @@ -147,10 +150,12 @@ export class SimulationRunsClient { request: Vapi.CreateSimulationRunDto, requestOptions?: SimulationRunsClient.RequestOptions, ): Promise> { + const { "Idempotency-Key": idempotencyKey, ..._body } = request; const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); const _headers: core.Fetcher.Args["headers"] = mergeHeaders( _authRequest.headers, this._options?.headers, + mergeOnlyDefinedHeaders({ "Idempotency-Key": idempotencyKey }), requestOptions?.headers, ); const _response = await (this._options.fetcher ?? core.fetcher)({ @@ -165,7 +170,7 @@ export class SimulationRunsClient { contentType: "application/json", queryParameters: requestOptions?.queryParams, requestType: "json", - body: request, + body: _body, timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, abortSignal: requestOptions?.abortSignal, @@ -183,6 +188,8 @@ export class SimulationRunsClient { _response.error.body as Vapi.SimulationRunPaymentRequiredResponse, _response.rawResponse, ); + case 409: + throw new Vapi.ConflictError(_response.error.body as unknown, _response.rawResponse); default: throw new errors.VapiError({ statusCode: _response.error.statusCode, @@ -329,14 +336,14 @@ export class SimulationRunsClient { public simulationRunControllerFindItems( request: Vapi.SimulationRunControllerFindItemsRequest, requestOptions?: SimulationRunsClient.RequestOptions, - ): core.HttpResponsePromise { + ): core.HttpResponsePromise { return core.HttpResponsePromise.fromPromise(this.__simulationRunControllerFindItems(request, requestOptions)); } private async __simulationRunControllerFindItems( request: Vapi.SimulationRunControllerFindItemsRequest, requestOptions?: SimulationRunsClient.RequestOptions, - ): Promise> { + ): Promise> { const { id, simulationId, @@ -395,7 +402,10 @@ export class SimulationRunsClient { logging: this._options.logging, }); if (_response.ok) { - return { data: _response.body as Vapi.SimulationRunItem[], rawResponse: _response.rawResponse }; + return { + data: _response.body as Vapi.SimulationRunControllerFindItemsResponse, + rawResponse: _response.rawResponse, + }; } if (_response.error.reason === "status-code") { diff --git a/src/api/resources/simulationRuns/client/requests/CreateSimulationRunDto.ts b/src/api/resources/simulationRuns/client/requests/CreateSimulationRunDto.ts index fe9fff57..f0cfd7c6 100644 --- a/src/api/resources/simulationRuns/client/requests/CreateSimulationRunDto.ts +++ b/src/api/resources/simulationRuns/client/requests/CreateSimulationRunDto.ts @@ -14,6 +14,10 @@ import type * as Vapi from "../../../../index.js"; * } */ export interface CreateSimulationRunDto { + /** Makes the request safe to retry. A retry with the same key and the same body returns the run the first request created, with `reused: true`, instead of starting another. Reusing a key with a different body returns 409. Up to 255 printable ASCII characters, scoped to your organization; a key stays bound to its run while the run exists. */ + "Idempotency-Key"?: string; + /** Generate directly attached target structured outputs. Default false. Enabled extraction may incur additional model charges. */ + includeTargetStructuredOutputs?: boolean; /** Array of simulations and/or suites to run */ simulations: Vapi.CreateSimulationRunDtoSimulationsItem[]; /** Target to test against */ diff --git a/src/api/resources/simulationRuns/client/requests/SimulationRunControllerFindAllRequest.ts b/src/api/resources/simulationRuns/client/requests/SimulationRunControllerFindAllRequest.ts index c4b3e3d7..d38ef758 100644 --- a/src/api/resources/simulationRuns/client/requests/SimulationRunControllerFindAllRequest.ts +++ b/src/api/resources/simulationRuns/client/requests/SimulationRunControllerFindAllRequest.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../../../../index.js"; * {} */ export interface SimulationRunControllerFindAllRequest { + /** Filter by simulation suite ids */ + suiteId?: string | string[]; /** Filter by status */ status?: Vapi.SimulationRunControllerFindAllRequestStatus; /** Filter by aggregate run result status */ diff --git a/src/api/resources/simulationRuns/types/SimulationRunControllerFindItemsResponse.ts b/src/api/resources/simulationRuns/types/SimulationRunControllerFindItemsResponse.ts new file mode 100644 index 00000000..6f7be17d --- /dev/null +++ b/src/api/resources/simulationRuns/types/SimulationRunControllerFindItemsResponse.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../index.js"; + +export type SimulationRunControllerFindItemsResponse = + | Vapi.SimulationRunItem[] + | Vapi.SimulationRunItemsPaginatedResponse; diff --git a/src/api/resources/simulationRuns/types/index.ts b/src/api/resources/simulationRuns/types/index.ts index 624ded58..ddb7bd58 100644 --- a/src/api/resources/simulationRuns/types/index.ts +++ b/src/api/resources/simulationRuns/types/index.ts @@ -9,3 +9,4 @@ export * from "./SimulationRunControllerFindAllResponse.js"; export * from "./SimulationRunControllerFindItemsRequestSortBy.js"; export * from "./SimulationRunControllerFindItemsRequestSortOrder.js"; export * from "./SimulationRunControllerFindItemsRequestStatus.js"; +export * from "./SimulationRunControllerFindItemsResponse.js"; diff --git a/src/api/resources/simulationSuites/client/Client.ts b/src/api/resources/simulationSuites/client/Client.ts index 704be7e0..9a473e14 100644 --- a/src/api/resources/simulationSuites/client/Client.ts +++ b/src/api/resources/simulationSuites/client/Client.ts @@ -34,15 +34,17 @@ export class SimulationSuitesClient { public simulationSuiteControllerFindAll( request: Vapi.SimulationSuiteControllerFindAllRequest = {}, requestOptions?: SimulationSuitesClient.RequestOptions, - ): core.HttpResponsePromise { + ): core.HttpResponsePromise { return core.HttpResponsePromise.fromPromise(this.__simulationSuiteControllerFindAll(request, requestOptions)); } private async __simulationSuiteControllerFindAll( request: Vapi.SimulationSuiteControllerFindAllRequest = {}, requestOptions?: SimulationSuitesClient.RequestOptions, - ): Promise> { + ): Promise> { const { + assistantId, + squadId, name, page, sortOrder, @@ -58,6 +60,8 @@ export class SimulationSuitesClient { updatedAtLe, } = request; const _queryParams: Record = { + assistantId, + squadId, name, page, sortOrder: sortOrder != null ? sortOrder : undefined, @@ -95,7 +99,10 @@ export class SimulationSuitesClient { logging: this._options.logging, }); if (_response.ok) { - return { data: _response.body as Vapi.SimulationSuite[], rawResponse: _response.rawResponse }; + return { + data: _response.body as Vapi.SimulationSuiteControllerFindAllResponse, + rawResponse: _response.rawResponse, + }; } if (_response.error.reason === "status-code") { @@ -432,4 +439,341 @@ export class SimulationSuitesClient { return handleNonStatusCodeError(_response.error, _response.rawResponse, "PATCH", "/eval/simulation/suite/{id}"); } + + /** + * Generate draft test requirements from an assistant's prompt, tools, and handoff configuration. The response includes numbered requirements describing expected behavior and open questions about behavior that needs clarification. Use this endpoint before generating a simulation suite. + * + * Review the requirements and resolve any open questions. To revise a draft, send it as `previousDraft` together with natural-language `feedback` describing the changes or answers. Once the requirements are ready, pass them to `POST /eval/simulation/onboarding/suite`. + * + * Requests can take up to 2 minutes. Each organization can draft requirements 60 times per UTC day, shared with the dashboard. A 429 `SIMULATION_ONBOARDING_QUOTA_EXCEEDED` response means the daily limit has been reached. Wait until the limit resets at 00:00 UTC before retrying. + * + * @param {Vapi.SimulationOnboardingRequirementsCreateDto} request + * @param {SimulationSuitesClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Vapi.BadRequestError} + * @throws {@link Vapi.ForbiddenError} + * @throws {@link Vapi.NotFoundError} + * @throws {@link Vapi.TooManyRequestsError} + * @throws {@link Vapi.BadGatewayError} + * @throws {@link Vapi.ServiceUnavailableError} + * @throws {@link Vapi.GatewayTimeoutError} + * + * @example + * await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + * assistantId: "assistantId" + * }) + */ + public simulationOnboardingControllerRequirementsDraft( + request: Vapi.SimulationOnboardingRequirementsCreateDto, + requestOptions?: SimulationSuitesClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__simulationOnboardingControllerRequirementsDraft(request, requestOptions), + ); + } + + private async __simulationOnboardingControllerRequirementsDraft( + request: Vapi.SimulationOnboardingRequirementsCreateDto, + requestOptions?: SimulationSuitesClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "eval/simulation/onboarding/requirements", + ), + 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 Vapi.SimulationOnboardingRequirementsDraftDto, + rawResponse: _response.rawResponse, + }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Vapi.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Vapi.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Vapi.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Vapi.TooManyRequestsError( + _response.error.body as Vapi.SimulationOnboardingErrorDto, + _response.rawResponse, + ); + case 502: + throw new Vapi.BadGatewayError(_response.error.body as unknown, _response.rawResponse); + case 503: + throw new Vapi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse); + case 504: + throw new Vapi.GatewayTimeoutError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError( + _response.error, + _response.rawResponse, + "POST", + "/eval/simulation/onboarding/requirements", + ); + } + + /** + * Generate and save a simulation suite from reviewed test requirements, and assign it to an assistant. First draft requirements with `POST /eval/simulation/onboarding/requirements`. The response includes the saved suite, its simulations, and requirement coverage, including any gaps. + * + * Requests can take up to 3 minutes. Set a client timeout of at least 200 seconds. + * + * Use a unique `idempotencyKey` for each suite generation request. Retrying with the same key does not create a duplicate suite: + * - On a timeout or a 5xx (502, 504, 524), retry with the same key. You get the saved suite, a 409 while it is still generating, or a fresh generation if the first one never saved. + * - On a 409 `SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS`, the first request is still generating. Wait `Retry-After` seconds (15) and retry with the same key. + * - On a 409 `SIMULATION_ONBOARDING_IDEMPOTENCY_KEY_REUSED`, the key was used for a different assistant or requirements. Send a new key. + * + * Review the generated simulations and coverage gaps. Revise the suite with `PATCH /eval/simulation/onboarding/suite/{suiteId}`, then run it with `POST /eval/simulation/run`. + * + * Each organization can generate 20 suites per UTC day, shared with the dashboard, and 2 at a time. A retry that returns a saved suite does not count toward these limits. On a 429 `SIMULATION_ONBOARDING_CONCURRENCY_LIMITED`, wait `Retry-After` seconds (30) before retrying. On a 429 `SIMULATION_ONBOARDING_QUOTA_EXCEEDED`, wait until the daily limit resets at 00:00 UTC before retrying. + * + * @param {Vapi.SimulationOnboardingSuiteCreateDto} request + * @param {SimulationSuitesClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Vapi.BadRequestError} + * @throws {@link Vapi.ForbiddenError} + * @throws {@link Vapi.NotFoundError} + * @throws {@link Vapi.ConflictError} + * @throws {@link Vapi.UnprocessableEntityError} + * @throws {@link Vapi.TooManyRequestsError} + * @throws {@link Vapi.BadGatewayError} + * @throws {@link Vapi.ServiceUnavailableError} + * @throws {@link Vapi.GatewayTimeoutError} + * + * @example + * await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + * assistantId: "assistantId", + * idempotencyKey: "idempotencyKey", + * requirements: [{ + * id: "id", + * text: "text" + * }] + * }) + */ + public simulationOnboardingControllerSuiteCreate( + request: Vapi.SimulationOnboardingSuiteCreateDto, + requestOptions?: SimulationSuitesClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__simulationOnboardingControllerSuiteCreate(request, requestOptions), + ); + } + + private async __simulationOnboardingControllerSuiteCreate( + request: Vapi.SimulationOnboardingSuiteCreateDto, + requestOptions?: SimulationSuitesClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "eval/simulation/onboarding/suite", + ), + 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 Vapi.SimulationOnboardingSuiteViewDto, + rawResponse: _response.rawResponse, + }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Vapi.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Vapi.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Vapi.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 409: + throw new Vapi.ConflictError(_response.error.body as unknown, _response.rawResponse); + case 422: + throw new Vapi.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Vapi.TooManyRequestsError( + _response.error.body as Vapi.SimulationOnboardingErrorDto, + _response.rawResponse, + ); + case 502: + throw new Vapi.BadGatewayError(_response.error.body as unknown, _response.rawResponse); + case 503: + throw new Vapi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse); + case 504: + throw new Vapi.GatewayTimeoutError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError( + _response.error, + _response.rawResponse, + "POST", + "/eval/simulation/onboarding/suite", + ); + } + + /** + * Revise a suite created by `POST /eval/simulation/onboarding/suite`. Remove simulations, rewrite scenarios using natural-language instructions, or set `retryFailed` to regenerate scenarios that failed or exceeded generation limits. The response includes the updated suite and requirement coverage. + * + * Requests can take up to 2 minutes. + * + * Send a new `patchKey` for each edit. Replaying an applied key changes nothing and returns the current suite, with `failedEditSimulationIds` listing the simulations that edit could not rewrite, so retry a timeout or a 5xx with the same key. A suite remembers its last 50 keys, so never reuse one. + * + * Each organization can make 60 edits per UTC day, shared with the dashboard. Requests that only remove simulations and replays of applied edits do not count toward this limit. On a 429 `SIMULATION_ONBOARDING_QUOTA_EXCEEDED`, wait until the daily limit resets at 00:00 UTC before retrying. + * + * @param {Vapi.SimulationOnboardingSuiteUpdateDto} request + * @param {SimulationSuitesClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Vapi.BadRequestError} + * @throws {@link Vapi.ForbiddenError} + * @throws {@link Vapi.NotFoundError} + * @throws {@link Vapi.UnprocessableEntityError} + * @throws {@link Vapi.TooManyRequestsError} + * @throws {@link Vapi.BadGatewayError} + * @throws {@link Vapi.ServiceUnavailableError} + * @throws {@link Vapi.GatewayTimeoutError} + * + * @example + * await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + * suiteId: "suiteId", + * patchKey: "patchKey" + * }) + */ + public simulationOnboardingControllerSuiteUpdate( + request: Vapi.SimulationOnboardingSuiteUpdateDto, + requestOptions?: SimulationSuitesClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__simulationOnboardingControllerSuiteUpdate(request, requestOptions), + ); + } + + private async __simulationOnboardingControllerSuiteUpdate( + request: Vapi.SimulationOnboardingSuiteUpdateDto, + requestOptions?: SimulationSuitesClient.RequestOptions, + ): Promise> { + const { suiteId, ..._body } = request; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + `eval/simulation/onboarding/suite/${core.url.encodePathParam(suiteId)}`, + ), + method: "PATCH", + headers: _headers, + contentType: "application/json", + queryParameters: requestOptions?.queryParams, + requestType: "json", + body: _body, + 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.SimulationOnboardingSuiteViewDto, + rawResponse: _response.rawResponse, + }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Vapi.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Vapi.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Vapi.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 422: + throw new Vapi.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Vapi.TooManyRequestsError( + _response.error.body as Vapi.SimulationOnboardingErrorDto, + _response.rawResponse, + ); + case 502: + throw new Vapi.BadGatewayError(_response.error.body as unknown, _response.rawResponse); + case 503: + throw new Vapi.ServiceUnavailableError(_response.error.body as unknown, _response.rawResponse); + case 504: + throw new Vapi.GatewayTimeoutError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError( + _response.error, + _response.rawResponse, + "PATCH", + "/eval/simulation/onboarding/suite/{suiteId}", + ); + } } diff --git a/src/api/resources/simulationSuites/client/requests/SimulationOnboardingRequirementsCreateDto.ts b/src/api/resources/simulationSuites/client/requests/SimulationOnboardingRequirementsCreateDto.ts new file mode 100644 index 00000000..f8bfcbf2 --- /dev/null +++ b/src/api/resources/simulationSuites/client/requests/SimulationOnboardingRequirementsCreateDto.ts @@ -0,0 +1,18 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../../index.js"; + +/** + * @example + * { + * assistantId: "assistantId" + * } + */ +export interface SimulationOnboardingRequirementsCreateDto { + /** Assistant to draft requirements for. */ + assistantId: string; + /** The draft being revised, exactly as this endpoint returned it. Send it with `feedback`. */ + previousDraft?: Vapi.SimulationOnboardingRequirementsDraftDto; + /** Natural-language instructions for revising the requirements in `previousDraft`, including answers to open questions. Required when `previousDraft` is provided. */ + feedback?: string; +} diff --git a/src/api/resources/simulationSuites/client/requests/SimulationOnboardingSuiteCreateDto.ts b/src/api/resources/simulationSuites/client/requests/SimulationOnboardingSuiteCreateDto.ts new file mode 100644 index 00000000..6cc3a0ae --- /dev/null +++ b/src/api/resources/simulationSuites/client/requests/SimulationOnboardingSuiteCreateDto.ts @@ -0,0 +1,23 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../../index.js"; + +/** + * @example + * { + * assistantId: "assistantId", + * idempotencyKey: "idempotencyKey", + * requirements: [{ + * id: "id", + * text: "text" + * }] + * } + */ +export interface SimulationOnboardingSuiteCreateDto { + /** Assistant the suite tests and is assigned to. */ + assistantId: string; + /** A unique key for this suite generation request. Retrying with the same key returns the saved suite, or a 409 while generation is in progress. Use a new key for a different assistant or requirements. */ + idempotencyKey: string; + /** The reviewed test requirements to generate simulations for, from the requirements draft. Each requirement must have a unique id. */ + requirements: Vapi.SimulationOnboardingRequirementDto[]; +} diff --git a/src/api/resources/simulationSuites/client/requests/SimulationOnboardingSuiteUpdateDto.ts b/src/api/resources/simulationSuites/client/requests/SimulationOnboardingSuiteUpdateDto.ts new file mode 100644 index 00000000..f2087cf3 --- /dev/null +++ b/src/api/resources/simulationSuites/client/requests/SimulationOnboardingSuiteUpdateDto.ts @@ -0,0 +1,22 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../../index.js"; + +/** + * @example + * { + * suiteId: "suiteId", + * patchKey: "patchKey" + * } + */ +export interface SimulationOnboardingSuiteUpdateDto { + suiteId: string; + /** A new key for each edit. Replaying an applied key changes nothing and returns the current suite. A suite remembers its last 50 keys, so never reuse one. */ + patchKey: string; + /** Simulations to take out of the suite. They are unlinked, not deleted. */ + removeSimulationIds?: string[]; + /** Simulations to rewrite in place, at most one edit per simulation: put every change for a simulation in one instruction. */ + edits?: Vapi.SimulationOnboardingSuiteEditDto[]; + /** Regenerate the scenarios that failed or did not fit when the suite was generated. */ + retryFailed?: boolean; +} diff --git a/src/api/resources/simulationSuites/client/requests/SimulationSuiteControllerFindAllRequest.ts b/src/api/resources/simulationSuites/client/requests/SimulationSuiteControllerFindAllRequest.ts index a68130df..a64fcf65 100644 --- a/src/api/resources/simulationSuites/client/requests/SimulationSuiteControllerFindAllRequest.ts +++ b/src/api/resources/simulationSuites/client/requests/SimulationSuiteControllerFindAllRequest.ts @@ -7,6 +7,10 @@ import type * as Vapi from "../../../../index.js"; * {} */ export interface SimulationSuiteControllerFindAllRequest { + /** Filter by any assigned assistant ID. Supplying both assistant and squad filters requires both to match. */ + assistantId?: string | string[]; + /** Filter by any assigned squad ID. Supplying both assistant and squad filters requires both to match. */ + squadId?: string | string[]; /** Search by simulation suite name */ name?: string; /** This is the page number to return. Defaults to 1. */ diff --git a/src/api/resources/simulationSuites/client/requests/index.ts b/src/api/resources/simulationSuites/client/requests/index.ts index 395f0b11..fa71a1e2 100644 --- a/src/api/resources/simulationSuites/client/requests/index.ts +++ b/src/api/resources/simulationSuites/client/requests/index.ts @@ -1,4 +1,7 @@ export type { CreateSimulationSuiteDto } from "./CreateSimulationSuiteDto.js"; +export type { SimulationOnboardingRequirementsCreateDto } from "./SimulationOnboardingRequirementsCreateDto.js"; +export type { SimulationOnboardingSuiteCreateDto } from "./SimulationOnboardingSuiteCreateDto.js"; +export type { SimulationOnboardingSuiteUpdateDto } from "./SimulationOnboardingSuiteUpdateDto.js"; export type { SimulationSuiteControllerDuplicateRequest } from "./SimulationSuiteControllerDuplicateRequest.js"; export type { SimulationSuiteControllerFindAllRequest } from "./SimulationSuiteControllerFindAllRequest.js"; export type { SimulationSuiteControllerFindOneRequest } from "./SimulationSuiteControllerFindOneRequest.js"; diff --git a/src/api/resources/simulationSuites/types/SimulationSuiteControllerFindAllResponse.ts b/src/api/resources/simulationSuites/types/SimulationSuiteControllerFindAllResponse.ts new file mode 100644 index 00000000..f4f163f6 --- /dev/null +++ b/src/api/resources/simulationSuites/types/SimulationSuiteControllerFindAllResponse.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 SimulationSuiteControllerFindAllResponse = Vapi.SimulationSuite[] | Vapi.SimulationSuitesPaginatedResponse; diff --git a/src/api/resources/simulationSuites/types/index.ts b/src/api/resources/simulationSuites/types/index.ts index 9053f260..6ea0539f 100644 --- a/src/api/resources/simulationSuites/types/index.ts +++ b/src/api/resources/simulationSuites/types/index.ts @@ -1,2 +1,3 @@ export * from "./SimulationSuiteControllerFindAllRequestSortBy.js"; export * from "./SimulationSuiteControllerFindAllRequestSortOrder.js"; +export * from "./SimulationSuiteControllerFindAllResponse.js"; diff --git a/src/api/resources/simulations/client/Client.ts b/src/api/resources/simulations/client/Client.ts index e4590a4a..92073f74 100644 --- a/src/api/resources/simulations/client/Client.ts +++ b/src/api/resources/simulations/client/Client.ts @@ -22,73 +22,6 @@ export class SimulationsClient { this._options = normalizeClientOptionsWithAuth(options); } - /** - * Generates scenarios for an assistant or squad by analyzing its configuration with AI. - * - * @param {Vapi.GenerateScenariosDto} request - * @param {SimulationsClient.RequestOptions} requestOptions - Request-specific configuration. - * - * @example - * await client.simulations.simulationGenerateControllerGenerate() - */ - public simulationGenerateControllerGenerate( - request: Vapi.GenerateScenariosDto = {}, - requestOptions?: SimulationsClient.RequestOptions, - ): core.HttpResponsePromise { - return core.HttpResponsePromise.fromPromise( - this.__simulationGenerateControllerGenerate(request, requestOptions), - ); - } - - private async __simulationGenerateControllerGenerate( - request: Vapi.GenerateScenariosDto = {}, - requestOptions?: SimulationsClient.RequestOptions, - ): Promise> { - const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); - const _headers: core.Fetcher.Args["headers"] = mergeHeaders( - _authRequest.headers, - this._options?.headers, - 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, - "eval/simulation/scenario/generate", - ), - 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 Vapi.GenerateScenariosResponse, rawResponse: _response.rawResponse }; - } - - if (_response.error.reason === "status-code") { - throw new errors.VapiError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); - } - - return handleNonStatusCodeError( - _response.error, - _response.rawResponse, - "POST", - "/eval/simulation/scenario/generate", - ); - } - /** * Returns the simulations for the authenticated organization. * diff --git a/src/api/resources/simulations/client/requests/index.ts b/src/api/resources/simulations/client/requests/index.ts index 0932b9e4..c2ff37c5 100644 --- a/src/api/resources/simulations/client/requests/index.ts +++ b/src/api/resources/simulations/client/requests/index.ts @@ -1,5 +1,4 @@ export type { CreateSimulationDto } from "./CreateSimulationDto.js"; -export type { GenerateScenariosDto } from "./GenerateScenariosDto.js"; export type { SimulationControllerFindAllRequest } from "./SimulationControllerFindAllRequest.js"; export type { SimulationControllerFindOneRequest } from "./SimulationControllerFindOneRequest.js"; export type { SimulationControllerRemoveRequest } from "./SimulationControllerRemoveRequest.js"; diff --git a/src/api/resources/structuredOutputs/client/Client.ts b/src/api/resources/structuredOutputs/client/Client.ts index 4e1fb921..b1bcc5e9 100644 --- a/src/api/resources/structuredOutputs/client/Client.ts +++ b/src/api/resources/structuredOutputs/client/Client.ts @@ -7,7 +7,7 @@ import * as core from "../../../../core/index.js"; import * as environments from "../../../../environments.js"; import { handleNonStatusCodeError } from "../../../../errors/handleNonStatusCodeError.js"; import * as errors from "../../../../errors/index.js"; -import type * as Vapi from "../../../index.js"; +import * as Vapi from "../../../index.js"; export declare namespace StructuredOutputsClient { export type Options = BaseClientOptions; @@ -120,6 +120,8 @@ export class StructuredOutputsClient { * @param {Vapi.CreateStructuredOutputDto} request * @param {StructuredOutputsClient.RequestOptions} requestOptions - Request-specific configuration. * + * @throws {@link Vapi.ConflictError} + * * @example * await client.structuredOutputs.structuredOutputControllerCreate({ * name: "name", @@ -169,11 +171,16 @@ export class StructuredOutputsClient { } if (_response.error.reason === "status-code") { - throw new errors.VapiError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); + switch (_response.error.statusCode) { + case 409: + throw new Vapi.ConflictError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } } return handleNonStatusCodeError(_response.error, _response.rawResponse, "POST", "/structured-output"); @@ -245,6 +252,8 @@ export class StructuredOutputsClient { * @param {Vapi.StructuredOutputControllerRemoveRequest} request * @param {StructuredOutputsClient.RequestOptions} requestOptions - Request-specific configuration. * + * @throws {@link Vapi.ConflictError} + * * @example * await client.structuredOutputs.structuredOutputControllerRemove({ * id: "id" @@ -289,11 +298,16 @@ export class StructuredOutputsClient { } if (_response.error.reason === "status-code") { - throw new errors.VapiError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); + switch (_response.error.statusCode) { + case 409: + throw new Vapi.ConflictError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } } return handleNonStatusCodeError(_response.error, _response.rawResponse, "DELETE", "/structured-output/{id}"); @@ -305,6 +319,8 @@ export class StructuredOutputsClient { * @param {Vapi.UpdateStructuredOutputDto} request * @param {StructuredOutputsClient.RequestOptions} requestOptions - Request-specific configuration. * + * @throws {@link Vapi.ConflictError} + * * @example * await client.structuredOutputs.structuredOutputControllerUpdate({ * id: "id", @@ -356,11 +372,16 @@ export class StructuredOutputsClient { } if (_response.error.reason === "status-code") { - throw new errors.VapiError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); + switch (_response.error.statusCode) { + case 409: + throw new Vapi.ConflictError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } } return handleNonStatusCodeError(_response.error, _response.rawResponse, "PATCH", "/structured-output/{id}"); diff --git a/src/api/resources/structuredOutputs/client/requests/UpdateStructuredOutputDto.ts b/src/api/resources/structuredOutputs/client/requests/UpdateStructuredOutputDto.ts index 464bd568..97eb2297 100644 --- a/src/api/resources/structuredOutputs/client/requests/UpdateStructuredOutputDto.ts +++ b/src/api/resources/structuredOutputs/client/requests/UpdateStructuredOutputDto.ts @@ -51,7 +51,8 @@ export interface UpdateStructuredOutputDto { * This is the model that will be used to extract the structured output. * * To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. - * Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. + * For text extraction, you must reference 'transcript', 'messages', or 'messagesWithConfidence' with the `{{}}` syntax to access the conversation history. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results but omits caller transcription-confidence fields. Text extraction can use `{{messagesWithConfidence}}` when the output needs the original message history with transcription confidence. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. * Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. * i.e.: * `{{structuredOutput}}` diff --git a/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponse.ts b/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponse.ts index 1fef9a1e..eb89c85a 100644 --- a/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponse.ts +++ b/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponse.ts @@ -3,5 +3,5 @@ import type * as Vapi from "../../../index.js"; export type StructuredOutputControllerRunResponse = - | Vapi.StructuredOutputControllerRunResponseZero - | Vapi.StructuredOutputRerunResponse; + | Vapi.StructuredOutputRerunResponse + | Vapi.StructuredOutputControllerRunResponseOne; diff --git a/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponseZero.ts b/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponseOne.ts similarity index 87% rename from src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponseZero.ts rename to src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponseOne.ts index bf4b716d..06a23a02 100644 --- a/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponseZero.ts +++ b/src/api/resources/structuredOutputs/types/StructuredOutputControllerRunResponseOne.ts @@ -2,7 +2,7 @@ import type * as Vapi from "../../../index.js"; -export interface StructuredOutputControllerRunResponseZero { +export interface StructuredOutputControllerRunResponseOne { /** * These are the structured outputs whose conditions gated them, keyed by * structured output id. Absent when nothing was skipped. An entry here means diff --git a/src/api/resources/structuredOutputs/types/UpdateStructuredOutputDtoModel.ts b/src/api/resources/structuredOutputs/types/UpdateStructuredOutputDtoModel.ts index 8f45cd2b..46ed4082 100644 --- a/src/api/resources/structuredOutputs/types/UpdateStructuredOutputDtoModel.ts +++ b/src/api/resources/structuredOutputs/types/UpdateStructuredOutputDtoModel.ts @@ -6,7 +6,8 @@ import type * as Vapi from "../../../index.js"; * This is the model that will be used to extract the structured output. * * To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. - * Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. + * For text extraction, you must reference 'transcript', 'messages', or 'messagesWithConfidence' with the `{{}}` syntax to access the conversation history. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results but omits caller transcription-confidence fields. Text extraction can use `{{messagesWithConfidence}}` when the output needs the original message history with transcription confidence. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. * Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. * i.e.: * `{{structuredOutput}}` diff --git a/src/api/resources/structuredOutputs/types/index.ts b/src/api/resources/structuredOutputs/types/index.ts index 4ae8801c..c2989085 100644 --- a/src/api/resources/structuredOutputs/types/index.ts +++ b/src/api/resources/structuredOutputs/types/index.ts @@ -1,7 +1,7 @@ export * from "./StructuredOutputControllerFindAllRequestSortBy.js"; export * from "./StructuredOutputControllerFindAllRequestSortOrder.js"; export * from "./StructuredOutputControllerRunResponse.js"; -export * from "./StructuredOutputControllerRunResponseZero.js"; +export * from "./StructuredOutputControllerRunResponseOne.js"; export * from "./UpdateStructuredOutputDtoConditionsItem.js"; export * from "./UpdateStructuredOutputDtoModel.js"; export * from "./UpdateStructuredOutputDtoType.js"; diff --git a/src/api/resources/tools/types/CreateToolsRequest.ts b/src/api/resources/tools/types/CreateToolsRequest.ts index bccbe360..5e638ac9 100644 --- a/src/api/resources/tools/types/CreateToolsRequest.ts +++ b/src/api/resources/tools/types/CreateToolsRequest.ts @@ -24,7 +24,8 @@ export type CreateToolsRequest = | Vapi.CreateToolsRequest.GohighlevelContactCreate | Vapi.CreateToolsRequest.GohighlevelContactGet | Vapi.CreateToolsRequest.SipRequest - | Vapi.CreateToolsRequest.Voicemail; + | Vapi.CreateToolsRequest.Voicemail + | Vapi.CreateToolsRequest.Code; export namespace CreateToolsRequest { export interface ApiRequest extends Vapi.CreateApiRequestToolDto { @@ -115,6 +116,10 @@ export namespace CreateToolsRequest { type: "voicemail"; } + export interface Code extends Vapi.CreateCodeToolDto { + type: "code"; + } + export type Response = | Vapi.CreateToolsRequest.ApiRequest | Vapi.CreateToolsRequest.Dtmf @@ -137,5 +142,6 @@ export namespace CreateToolsRequest { | Vapi.CreateToolsRequest.GohighlevelContactCreate | Vapi.CreateToolsRequest.GohighlevelContactGet | Vapi.CreateToolsRequest.SipRequest - | Vapi.CreateToolsRequest.Voicemail; + | Vapi.CreateToolsRequest.Voicemail + | Vapi.CreateToolsRequest.Code; } diff --git a/src/api/resources/tools/types/CreateToolsResponse.ts b/src/api/resources/tools/types/CreateToolsResponse.ts index fa91f326..637d4d7a 100644 --- a/src/api/resources/tools/types/CreateToolsResponse.ts +++ b/src/api/resources/tools/types/CreateToolsResponse.ts @@ -26,7 +26,8 @@ export type CreateToolsResponse = | Vapi.CreateToolsResponse.GohighlevelContactCreate | Vapi.CreateToolsResponse.GohighlevelContactGet | Vapi.CreateToolsResponse.SipRequest - | Vapi.CreateToolsResponse.Voicemail; + | Vapi.CreateToolsResponse.Voicemail + | Vapi.CreateToolsResponse.Ghl; export namespace CreateToolsResponse { export interface ApiRequest extends Vapi.ApiRequestTool { @@ -125,6 +126,36 @@ export namespace CreateToolsResponse { type: "voicemail"; } + export interface Ghl extends Vapi.GhlTool { + type: "ghl"; + } + + export type Request = + | Vapi.CreateToolsResponse.ApiRequest + | Vapi.CreateToolsResponse.Code + | Vapi.CreateToolsResponse.Dtmf + | Vapi.CreateToolsResponse.EndCall + | Vapi.CreateToolsResponse.Function + | Vapi.CreateToolsResponse.KnowledgeBase + | Vapi.CreateToolsResponse.TransferCall + | Vapi.CreateToolsResponse.Handoff + | Vapi.CreateToolsResponse.Bash + | Vapi.CreateToolsResponse.Computer + | Vapi.CreateToolsResponse.TextEditor + | Vapi.CreateToolsResponse.Query + | Vapi.CreateToolsResponse.GoogleCalendarEventCreate + | Vapi.CreateToolsResponse.GoogleSheetsRowAppend + | Vapi.CreateToolsResponse.GoogleCalendarAvailabilityCheck + | Vapi.CreateToolsResponse.SlackMessageSend + | Vapi.CreateToolsResponse.Sms + | Vapi.CreateToolsResponse.Mcp + | Vapi.CreateToolsResponse.GohighlevelCalendarAvailabilityCheck + | Vapi.CreateToolsResponse.GohighlevelCalendarEventCreate + | Vapi.CreateToolsResponse.GohighlevelContactCreate + | Vapi.CreateToolsResponse.GohighlevelContactGet + | Vapi.CreateToolsResponse.SipRequest + | Vapi.CreateToolsResponse.Voicemail + | Vapi.CreateToolsResponse.Ghl; export type Response = | Vapi.CreateToolsResponse.ApiRequest | Vapi.CreateToolsResponse.Code @@ -149,5 +180,6 @@ export namespace CreateToolsResponse { | Vapi.CreateToolsResponse.GohighlevelContactCreate | Vapi.CreateToolsResponse.GohighlevelContactGet | Vapi.CreateToolsResponse.SipRequest - | Vapi.CreateToolsResponse.Voicemail; + | Vapi.CreateToolsResponse.Voicemail + | Vapi.CreateToolsResponse.Ghl; } diff --git a/src/api/resources/tools/types/DeleteToolsResponse.ts b/src/api/resources/tools/types/DeleteToolsResponse.ts index 76c4db0a..cc3d04ae 100644 --- a/src/api/resources/tools/types/DeleteToolsResponse.ts +++ b/src/api/resources/tools/types/DeleteToolsResponse.ts @@ -26,7 +26,8 @@ export type DeleteToolsResponse = | Vapi.DeleteToolsResponse.GohighlevelContactCreate | Vapi.DeleteToolsResponse.GohighlevelContactGet | Vapi.DeleteToolsResponse.SipRequest - | Vapi.DeleteToolsResponse.Voicemail; + | Vapi.DeleteToolsResponse.Voicemail + | Vapi.DeleteToolsResponse.Ghl; export namespace DeleteToolsResponse { export interface ApiRequest extends Vapi.ApiRequestTool { @@ -125,6 +126,36 @@ export namespace DeleteToolsResponse { type: "voicemail"; } + export interface Ghl extends Vapi.GhlTool { + type: "ghl"; + } + + export type Request = + | Vapi.DeleteToolsResponse.ApiRequest + | Vapi.DeleteToolsResponse.Code + | Vapi.DeleteToolsResponse.Dtmf + | Vapi.DeleteToolsResponse.EndCall + | Vapi.DeleteToolsResponse.Function + | Vapi.DeleteToolsResponse.KnowledgeBase + | Vapi.DeleteToolsResponse.TransferCall + | Vapi.DeleteToolsResponse.Handoff + | Vapi.DeleteToolsResponse.Bash + | Vapi.DeleteToolsResponse.Computer + | Vapi.DeleteToolsResponse.TextEditor + | Vapi.DeleteToolsResponse.Query + | Vapi.DeleteToolsResponse.GoogleCalendarEventCreate + | Vapi.DeleteToolsResponse.GoogleSheetsRowAppend + | Vapi.DeleteToolsResponse.GoogleCalendarAvailabilityCheck + | Vapi.DeleteToolsResponse.SlackMessageSend + | Vapi.DeleteToolsResponse.Sms + | Vapi.DeleteToolsResponse.Mcp + | Vapi.DeleteToolsResponse.GohighlevelCalendarAvailabilityCheck + | Vapi.DeleteToolsResponse.GohighlevelCalendarEventCreate + | Vapi.DeleteToolsResponse.GohighlevelContactCreate + | Vapi.DeleteToolsResponse.GohighlevelContactGet + | Vapi.DeleteToolsResponse.SipRequest + | Vapi.DeleteToolsResponse.Voicemail + | Vapi.DeleteToolsResponse.Ghl; export type Response = | Vapi.DeleteToolsResponse.ApiRequest | Vapi.DeleteToolsResponse.Code @@ -149,5 +180,6 @@ export namespace DeleteToolsResponse { | Vapi.DeleteToolsResponse.GohighlevelContactCreate | Vapi.DeleteToolsResponse.GohighlevelContactGet | Vapi.DeleteToolsResponse.SipRequest - | Vapi.DeleteToolsResponse.Voicemail; + | Vapi.DeleteToolsResponse.Voicemail + | Vapi.DeleteToolsResponse.Ghl; } diff --git a/src/api/resources/tools/types/GetToolsResponse.ts b/src/api/resources/tools/types/GetToolsResponse.ts index 2520e6cf..263aa854 100644 --- a/src/api/resources/tools/types/GetToolsResponse.ts +++ b/src/api/resources/tools/types/GetToolsResponse.ts @@ -26,7 +26,8 @@ export type GetToolsResponse = | Vapi.GetToolsResponse.GohighlevelContactCreate | Vapi.GetToolsResponse.GohighlevelContactGet | Vapi.GetToolsResponse.SipRequest - | Vapi.GetToolsResponse.Voicemail; + | Vapi.GetToolsResponse.Voicemail + | Vapi.GetToolsResponse.Ghl; export namespace GetToolsResponse { export interface ApiRequest extends Vapi.ApiRequestTool { @@ -125,6 +126,36 @@ export namespace GetToolsResponse { type: "voicemail"; } + export interface Ghl extends Vapi.GhlTool { + type: "ghl"; + } + + export type Request = + | Vapi.GetToolsResponse.ApiRequest + | Vapi.GetToolsResponse.Code + | Vapi.GetToolsResponse.Dtmf + | Vapi.GetToolsResponse.EndCall + | Vapi.GetToolsResponse.Function + | Vapi.GetToolsResponse.KnowledgeBase + | Vapi.GetToolsResponse.TransferCall + | Vapi.GetToolsResponse.Handoff + | Vapi.GetToolsResponse.Bash + | Vapi.GetToolsResponse.Computer + | Vapi.GetToolsResponse.TextEditor + | Vapi.GetToolsResponse.Query + | Vapi.GetToolsResponse.GoogleCalendarEventCreate + | Vapi.GetToolsResponse.GoogleSheetsRowAppend + | Vapi.GetToolsResponse.GoogleCalendarAvailabilityCheck + | Vapi.GetToolsResponse.SlackMessageSend + | Vapi.GetToolsResponse.Sms + | Vapi.GetToolsResponse.Mcp + | Vapi.GetToolsResponse.GohighlevelCalendarAvailabilityCheck + | Vapi.GetToolsResponse.GohighlevelCalendarEventCreate + | Vapi.GetToolsResponse.GohighlevelContactCreate + | Vapi.GetToolsResponse.GohighlevelContactGet + | Vapi.GetToolsResponse.SipRequest + | Vapi.GetToolsResponse.Voicemail + | Vapi.GetToolsResponse.Ghl; export type Response = | Vapi.GetToolsResponse.ApiRequest | Vapi.GetToolsResponse.Code @@ -149,5 +180,6 @@ export namespace GetToolsResponse { | Vapi.GetToolsResponse.GohighlevelContactCreate | Vapi.GetToolsResponse.GohighlevelContactGet | Vapi.GetToolsResponse.SipRequest - | Vapi.GetToolsResponse.Voicemail; + | Vapi.GetToolsResponse.Voicemail + | Vapi.GetToolsResponse.Ghl; } diff --git a/src/api/resources/tools/types/ListToolsResponseItem.ts b/src/api/resources/tools/types/ListToolsResponseItem.ts index 2278cb28..e9a0c55d 100644 --- a/src/api/resources/tools/types/ListToolsResponseItem.ts +++ b/src/api/resources/tools/types/ListToolsResponseItem.ts @@ -26,7 +26,8 @@ export type ListToolsResponseItem = | Vapi.ListToolsResponseItem.GohighlevelContactCreate | Vapi.ListToolsResponseItem.GohighlevelContactGet | Vapi.ListToolsResponseItem.SipRequest - | Vapi.ListToolsResponseItem.Voicemail; + | Vapi.ListToolsResponseItem.Voicemail + | Vapi.ListToolsResponseItem.Ghl; export namespace ListToolsResponseItem { export interface ApiRequest extends Vapi.ApiRequestTool { @@ -125,6 +126,36 @@ export namespace ListToolsResponseItem { type: "voicemail"; } + export interface Ghl extends Vapi.GhlTool { + type: "ghl"; + } + + export type Request = + | Vapi.ListToolsResponseItem.ApiRequest + | Vapi.ListToolsResponseItem.Code + | Vapi.ListToolsResponseItem.Dtmf + | Vapi.ListToolsResponseItem.EndCall + | Vapi.ListToolsResponseItem.Function + | Vapi.ListToolsResponseItem.KnowledgeBase + | Vapi.ListToolsResponseItem.TransferCall + | Vapi.ListToolsResponseItem.Handoff + | Vapi.ListToolsResponseItem.Bash + | Vapi.ListToolsResponseItem.Computer + | Vapi.ListToolsResponseItem.TextEditor + | Vapi.ListToolsResponseItem.Query + | Vapi.ListToolsResponseItem.GoogleCalendarEventCreate + | Vapi.ListToolsResponseItem.GoogleSheetsRowAppend + | Vapi.ListToolsResponseItem.GoogleCalendarAvailabilityCheck + | Vapi.ListToolsResponseItem.SlackMessageSend + | Vapi.ListToolsResponseItem.Sms + | Vapi.ListToolsResponseItem.Mcp + | Vapi.ListToolsResponseItem.GohighlevelCalendarAvailabilityCheck + | Vapi.ListToolsResponseItem.GohighlevelCalendarEventCreate + | Vapi.ListToolsResponseItem.GohighlevelContactCreate + | Vapi.ListToolsResponseItem.GohighlevelContactGet + | Vapi.ListToolsResponseItem.SipRequest + | Vapi.ListToolsResponseItem.Voicemail + | Vapi.ListToolsResponseItem.Ghl; export type Response = | Vapi.ListToolsResponseItem.ApiRequest | Vapi.ListToolsResponseItem.Code @@ -149,5 +180,6 @@ export namespace ListToolsResponseItem { | Vapi.ListToolsResponseItem.GohighlevelContactCreate | Vapi.ListToolsResponseItem.GohighlevelContactGet | Vapi.ListToolsResponseItem.SipRequest - | Vapi.ListToolsResponseItem.Voicemail; + | Vapi.ListToolsResponseItem.Voicemail + | Vapi.ListToolsResponseItem.Ghl; } diff --git a/src/api/resources/tools/types/UpdateToolsRequestBody.ts b/src/api/resources/tools/types/UpdateToolsRequestBody.ts index facf7f26..40a9c8ee 100644 --- a/src/api/resources/tools/types/UpdateToolsRequestBody.ts +++ b/src/api/resources/tools/types/UpdateToolsRequestBody.ts @@ -25,7 +25,8 @@ export type UpdateToolsRequestBody = | Vapi.UpdateToolsRequestBody.GohighlevelContactCreate | Vapi.UpdateToolsRequestBody.GohighlevelContactGet | Vapi.UpdateToolsRequestBody.SipRequest - | Vapi.UpdateToolsRequestBody.Voicemail; + | Vapi.UpdateToolsRequestBody.Voicemail + | Vapi.UpdateToolsRequestBody.Code; export namespace UpdateToolsRequestBody { export interface ApiRequest extends Vapi.UpdateApiRequestToolDto { @@ -120,6 +121,10 @@ export namespace UpdateToolsRequestBody { type: "voicemail"; } + export interface Code extends Vapi.UpdateCodeToolDto { + type: "code"; + } + export type Response = | Vapi.UpdateToolsRequestBody.ApiRequest | Vapi.UpdateToolsRequestBody.Dtmf @@ -143,5 +148,6 @@ export namespace UpdateToolsRequestBody { | Vapi.UpdateToolsRequestBody.GohighlevelContactCreate | Vapi.UpdateToolsRequestBody.GohighlevelContactGet | Vapi.UpdateToolsRequestBody.SipRequest - | Vapi.UpdateToolsRequestBody.Voicemail; + | Vapi.UpdateToolsRequestBody.Voicemail + | Vapi.UpdateToolsRequestBody.Code; } diff --git a/src/api/resources/tools/types/UpdateToolsResponse.ts b/src/api/resources/tools/types/UpdateToolsResponse.ts index 7f94a98b..e7daaf04 100644 --- a/src/api/resources/tools/types/UpdateToolsResponse.ts +++ b/src/api/resources/tools/types/UpdateToolsResponse.ts @@ -26,7 +26,8 @@ export type UpdateToolsResponse = | Vapi.UpdateToolsResponse.GohighlevelContactCreate | Vapi.UpdateToolsResponse.GohighlevelContactGet | Vapi.UpdateToolsResponse.SipRequest - | Vapi.UpdateToolsResponse.Voicemail; + | Vapi.UpdateToolsResponse.Voicemail + | Vapi.UpdateToolsResponse.Ghl; export namespace UpdateToolsResponse { export interface ApiRequest extends Vapi.ApiRequestTool { @@ -125,6 +126,36 @@ export namespace UpdateToolsResponse { type: "voicemail"; } + export interface Ghl extends Vapi.GhlTool { + type: "ghl"; + } + + export type Request = + | Vapi.UpdateToolsResponse.ApiRequest + | Vapi.UpdateToolsResponse.Code + | Vapi.UpdateToolsResponse.Dtmf + | Vapi.UpdateToolsResponse.EndCall + | Vapi.UpdateToolsResponse.Function + | Vapi.UpdateToolsResponse.KnowledgeBase + | Vapi.UpdateToolsResponse.TransferCall + | Vapi.UpdateToolsResponse.Handoff + | Vapi.UpdateToolsResponse.Bash + | Vapi.UpdateToolsResponse.Computer + | Vapi.UpdateToolsResponse.TextEditor + | Vapi.UpdateToolsResponse.Query + | Vapi.UpdateToolsResponse.GoogleCalendarEventCreate + | Vapi.UpdateToolsResponse.GoogleSheetsRowAppend + | Vapi.UpdateToolsResponse.GoogleCalendarAvailabilityCheck + | Vapi.UpdateToolsResponse.SlackMessageSend + | Vapi.UpdateToolsResponse.Sms + | Vapi.UpdateToolsResponse.Mcp + | Vapi.UpdateToolsResponse.GohighlevelCalendarAvailabilityCheck + | Vapi.UpdateToolsResponse.GohighlevelCalendarEventCreate + | Vapi.UpdateToolsResponse.GohighlevelContactCreate + | Vapi.UpdateToolsResponse.GohighlevelContactGet + | Vapi.UpdateToolsResponse.SipRequest + | Vapi.UpdateToolsResponse.Voicemail + | Vapi.UpdateToolsResponse.Ghl; export type Response = | Vapi.UpdateToolsResponse.ApiRequest | Vapi.UpdateToolsResponse.Code @@ -149,5 +180,6 @@ export namespace UpdateToolsResponse { | Vapi.UpdateToolsResponse.GohighlevelContactCreate | Vapi.UpdateToolsResponse.GohighlevelContactGet | Vapi.UpdateToolsResponse.SipRequest - | Vapi.UpdateToolsResponse.Voicemail; + | Vapi.UpdateToolsResponse.Voicemail + | Vapi.UpdateToolsResponse.Ghl; } diff --git a/src/api/resources/trafficAllocations/client/Client.ts b/src/api/resources/trafficAllocations/client/Client.ts index 181e9e80..13cc930b 100644 --- a/src/api/resources/trafficAllocations/client/Client.ts +++ b/src/api/resources/trafficAllocations/client/Client.ts @@ -23,9 +23,7 @@ export class TrafficAllocationsClient { } /** - * @beta This endpoint is in pre-release and may change. - * - * The append-only history of an assistant's allocations, newest first. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. + * The append-only history of an assistant's allocations, newest first. * * @param {Vapi.TrafficAllocationControllerFindAllPaginatedRequest} request * @param {TrafficAllocationsClient.RequestOptions} requestOptions - Request-specific configuration. @@ -101,9 +99,7 @@ export class TrafficAllocationsClient { } /** - * @beta This endpoint is in pre-release and may change. - * - * Creates a new traffic allocation for an assistant, replacing the one currently in effect. To start or adjust a split, send targets naming published versions (such as "v7") with percentages totaling 100; allocationIntent is inferred as 'explicit'. To stop splitting and send every call to the newest published version, send allocationIntent 'follow-latest' with no targets field; stopping always names its intent, so a dropped targets field can never end a split by accident. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. + * Creates a new traffic allocation for an assistant, replacing the one currently in effect. To start or adjust a split, send targets naming published versions (such as "v7") with percentages totaling 100; allocationIntent is inferred as 'explicit'. To stop splitting and send every call to the newest published version, send allocationIntent 'follow-latest' with no targets field; stopping always names its intent, so a dropped targets field can never end a split by accident. * * @param {Vapi.CreateTrafficAllocationDto} request * @param {TrafficAllocationsClient.RequestOptions} requestOptions - Request-specific configuration. @@ -181,9 +177,7 @@ export class TrafficAllocationsClient { } /** - * @beta This endpoint is in pre-release and may change. - * - * The allocation currently in effect for the assistant, with its targets. The response carries no allocation field when traffic splitting has never been configured. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. + * The allocation currently in effect for the assistant, with its targets. The response carries no allocation field when traffic splitting has never been configured. * * @param {Vapi.TrafficAllocationControllerLatestGetRequest} request * @param {TrafficAllocationsClient.RequestOptions} requestOptions - Request-specific configuration. @@ -261,9 +255,88 @@ export class TrafficAllocationsClient { } /** - * @beta This endpoint is in pre-release and may change. + * Per-assistant-version call metrics over a time window: call counts, configured vs actual traffic share, duration, cost per minute, latency, ended reasons, a bucketed timeseries, and optional structured output aggregations. Calls with no assistant version are reported as an 'unversioned' row. + * + * @param {Vapi.TrafficAllocationControllerMetricsGetRequest} request + * @param {TrafficAllocationsClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Vapi.BadRequestError} + * @throws {@link Vapi.ForbiddenError} * - * Returns a single allocation by id, including its targets and actor attribution. Traffic splitting is in beta, rolling out to select organizations; requests from organizations without access receive a 403. + * @example + * await client.trafficAllocations.trafficAllocationControllerMetricsGet({ + * assistantId: "assistantId", + * from: "2024-01-15T09:30:00Z", + * to: "2024-01-15T09:30:00Z" + * }) + */ + public trafficAllocationControllerMetricsGet( + request: Vapi.TrafficAllocationControllerMetricsGetRequest, + requestOptions?: TrafficAllocationsClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__trafficAllocationControllerMetricsGet(request, requestOptions), + ); + } + + private async __trafficAllocationControllerMetricsGet( + request: Vapi.TrafficAllocationControllerMetricsGetRequest, + requestOptions?: TrafficAllocationsClient.RequestOptions, + ): Promise> { + const { assistantId, from: from_, to, bucket, structuredOutputIds } = request; + const _queryParams: Record = { + assistantId, + from: from_, + to, + bucket: bucket != null ? bucket : undefined, + structuredOutputIds, + }; + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + 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, + "traffic-allocations/metrics", + ), + 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: _response.body as Vapi.TrafficTabMetricsDto, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Vapi.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Vapi.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.VapiError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/traffic-allocations/metrics"); + } + + /** + * Returns a single allocation by id, including its targets and actor attribution. * * @param {Vapi.TrafficAllocationControllerFindOneRequest} request * @param {TrafficAllocationsClient.RequestOptions} requestOptions - Request-specific configuration. diff --git a/src/api/resources/trafficAllocations/client/requests/TrafficAllocationControllerMetricsGetRequest.ts b/src/api/resources/trafficAllocations/client/requests/TrafficAllocationControllerMetricsGetRequest.ts new file mode 100644 index 00000000..1f111869 --- /dev/null +++ b/src/api/resources/trafficAllocations/client/requests/TrafficAllocationControllerMetricsGetRequest.ts @@ -0,0 +1,24 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../../../../index.js"; + +/** + * @example + * { + * assistantId: "assistantId", + * from: "2024-01-15T09:30:00Z", + * to: "2024-01-15T09:30:00Z" + * } + */ +export interface TrafficAllocationControllerMetricsGetRequest { + /** The assistant whose per-version traffic metrics to return. */ + assistantId: string; + /** Start of the metrics window (inclusive), ISO 8601 datetime. */ + from: string; + /** End of the metrics window (exclusive), ISO 8601 datetime. Must be later than from, and the window may hold at most 2000 buckets of the requested width. */ + to: string; + /** Bucket size for the timeseries. Defaults to 'day'. */ + bucket?: Vapi.TrafficAllocationControllerMetricsGetRequestBucket; + /** Structured output ids to aggregate per version, as an array or a comma-separated string. At most 5. */ + structuredOutputIds?: string | string[]; +} diff --git a/src/api/resources/trafficAllocations/client/requests/index.ts b/src/api/resources/trafficAllocations/client/requests/index.ts index b42f5be8..68db74eb 100644 --- a/src/api/resources/trafficAllocations/client/requests/index.ts +++ b/src/api/resources/trafficAllocations/client/requests/index.ts @@ -2,3 +2,4 @@ export type { CreateTrafficAllocationDto } from "./CreateTrafficAllocationDto.js export type { TrafficAllocationControllerFindAllPaginatedRequest } from "./TrafficAllocationControllerFindAllPaginatedRequest.js"; export type { TrafficAllocationControllerFindOneRequest } from "./TrafficAllocationControllerFindOneRequest.js"; export type { TrafficAllocationControllerLatestGetRequest } from "./TrafficAllocationControllerLatestGetRequest.js"; +export type { TrafficAllocationControllerMetricsGetRequest } from "./TrafficAllocationControllerMetricsGetRequest.js"; diff --git a/src/api/resources/trafficAllocations/types/TrafficAllocationControllerMetricsGetRequestBucket.ts b/src/api/resources/trafficAllocations/types/TrafficAllocationControllerMetricsGetRequestBucket.ts new file mode 100644 index 00000000..566794ef --- /dev/null +++ b/src/api/resources/trafficAllocations/types/TrafficAllocationControllerMetricsGetRequestBucket.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TrafficAllocationControllerMetricsGetRequestBucket = { + Hour: "hour", + Day: "day", +} as const; +export type TrafficAllocationControllerMetricsGetRequestBucket = + (typeof TrafficAllocationControllerMetricsGetRequestBucket)[keyof typeof TrafficAllocationControllerMetricsGetRequestBucket]; diff --git a/src/api/resources/trafficAllocations/types/index.ts b/src/api/resources/trafficAllocations/types/index.ts index b340d51b..843892e2 100644 --- a/src/api/resources/trafficAllocations/types/index.ts +++ b/src/api/resources/trafficAllocations/types/index.ts @@ -1,2 +1,3 @@ export * from "./CreateTrafficAllocationDtoAllocationIntent.js"; export * from "./TrafficAllocationControllerFindAllPaginatedRequestSortOrder.js"; +export * from "./TrafficAllocationControllerMetricsGetRequestBucket.js"; diff --git a/src/api/types/AnalysisCost.ts b/src/api/types/AnalysisCost.ts index b0a31ec1..44598695 100644 --- a/src/api/types/AnalysisCost.ts +++ b/src/api/types/AnalysisCost.ts @@ -16,6 +16,8 @@ export interface AnalysisCost { 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 | undefined; + /** This is the number of reasoning tokens generated in the analysis, reported only by reasoning models (e.g., GPT-5) on providers that report them. This is a subset of `completionTokens`, not an addition to it: reasoning tokens are already billed at the output-token rate, so this is for visibility only and does not affect `cost`. */ + reasoningTokens?: number | undefined; /** * This is the per-structured-output breakdown of this cost. The `cost`, `promptTokens`, `completionTokens` and `cachedPromptTokens` above are the sums of these rows. * diff --git a/src/api/types/AnthropicBedrockModel.ts b/src/api/types/AnthropicBedrockModel.ts index 9f81fac8..aa1eba24 100644 --- a/src/api/types/AnthropicBedrockModel.ts +++ b/src/api/types/AnthropicBedrockModel.ts @@ -33,15 +33,21 @@ export interface AnthropicBedrockModel { model: Vapi.AnthropicBedrockModelModel; /** At most one same-provider Bedrock fallback model, tried if the primary fails. Cannot be combined with thinking in this release. Resolution uses the call's Bedrock credential region (or ANTHROPIC_BEDROCK_AWS_REGION). Names with no inference profile in that region are skipped and warned, never remapped to US or global. On Vapi EU, fallback names without an EU inference profile are rejected at write time. */ fallbackModels?: Vapi.AnthropicBedrockModelFallbackModelsItem[] | undefined; + /** + * Reasoning effort for claude-haiku-5-5. `none` turns thinking off. `low` to `max` + * use adaptive thinking at that effort; higher effort can add latency before the + * model speaks. Unset means `none`. Rejected for every other model. + */ + reasoningEffort?: Vapi.AnthropicBedrockModelReasoningEffort | undefined; /** * 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. + * Only applicable for models that support a thinking budget. + * Set maxTokens greater than thinking.budgetTokens; the default cap is too small. */ thinking?: Vapi.AnthropicThinkingConfig | undefined; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/AnthropicBedrockModelFallbackModelsItem.ts b/src/api/types/AnthropicBedrockModelFallbackModelsItem.ts index 80301423..1b8baad1 100644 --- a/src/api/types/AnthropicBedrockModelFallbackModelsItem.ts +++ b/src/api/types/AnthropicBedrockModelFallbackModelsItem.ts @@ -15,6 +15,8 @@ export const AnthropicBedrockModelFallbackModelsItem = { ClaudeSonnet4520250929: "claude-sonnet-4-5-20250929", ClaudeSonnet46: "claude-sonnet-4-6", ClaudeHaiku4520251001: "claude-haiku-4-5-20251001", + ClaudeHaiku55: "claude-haiku-5-5", + GlobalAnthropicClaudeSonnet46: "global.anthropic.claude-sonnet-4-6", GlobalAnthropicClaudeHaiku4520251001V10: "global.anthropic.claude-haiku-4-5-20251001-v1:0", } as const; export type AnthropicBedrockModelFallbackModelsItem = diff --git a/src/api/types/AnthropicBedrockModelModel.ts b/src/api/types/AnthropicBedrockModelModel.ts index c3eaef66..cd198d89 100644 --- a/src/api/types/AnthropicBedrockModelModel.ts +++ b/src/api/types/AnthropicBedrockModelModel.ts @@ -16,6 +16,8 @@ export const AnthropicBedrockModelModel = { ClaudeSonnet4520250929: "claude-sonnet-4-5-20250929", ClaudeSonnet46: "claude-sonnet-4-6", ClaudeHaiku4520251001: "claude-haiku-4-5-20251001", + ClaudeHaiku55: "claude-haiku-5-5", + GlobalAnthropicClaudeSonnet46: "global.anthropic.claude-sonnet-4-6", GlobalAnthropicClaudeHaiku4520251001V10: "global.anthropic.claude-haiku-4-5-20251001-v1:0", } as const; export type AnthropicBedrockModelModel = (typeof AnthropicBedrockModelModel)[keyof typeof AnthropicBedrockModelModel]; diff --git a/src/api/types/AnthropicBedrockModelReasoningEffort.ts b/src/api/types/AnthropicBedrockModelReasoningEffort.ts new file mode 100644 index 00000000..2d95f1ac --- /dev/null +++ b/src/api/types/AnthropicBedrockModelReasoningEffort.ts @@ -0,0 +1,17 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * Reasoning effort for claude-haiku-5-5. `none` turns thinking off. `low` to `max` + * use adaptive thinking at that effort; higher effort can add latency before the + * model speaks. Unset means `none`. Rejected for every other model. + */ +export const AnthropicBedrockModelReasoningEffort = { + None: "none", + Low: "low", + Medium: "medium", + High: "high", + Xhigh: "xhigh", + Max: "max", +} as const; +export type AnthropicBedrockModelReasoningEffort = + (typeof AnthropicBedrockModelReasoningEffort)[keyof typeof AnthropicBedrockModelReasoningEffort]; diff --git a/src/api/types/AnthropicModel.ts b/src/api/types/AnthropicModel.ts index 5c98b48f..19fff7f2 100644 --- a/src/api/types/AnthropicModel.ts +++ b/src/api/types/AnthropicModel.ts @@ -31,15 +31,21 @@ export interface AnthropicModel { knowledgeBase?: Vapi.CreateCustomKnowledgeBaseDto | undefined; /** The specific Anthropic/Claude model that will be used. */ model: Vapi.AnthropicModelModel; + /** + * Reasoning effort for claude-haiku-5-5. `none` turns thinking off. `low` to `max` + * use adaptive thinking at that effort; higher effort can add latency before the + * model speaks. Unset means `none`. Rejected for every other model. + */ + reasoningEffort?: Vapi.AnthropicModelReasoningEffort | undefined; /** * 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. + * Only applicable for models that support a thinking budget. + * Set maxTokens greater than thinking.budgetTokens; the default cap is too small. */ thinking?: Vapi.AnthropicThinkingConfig | undefined; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/AnthropicModelModel.ts b/src/api/types/AnthropicModelModel.ts index 2830cba8..b046360d 100644 --- a/src/api/types/AnthropicModelModel.ts +++ b/src/api/types/AnthropicModelModel.ts @@ -17,5 +17,6 @@ export const AnthropicModelModel = { ClaudeSonnet46: "claude-sonnet-4-6", ClaudeSonnet5: "claude-sonnet-5", ClaudeHaiku4520251001: "claude-haiku-4-5-20251001", + ClaudeHaiku55: "claude-haiku-5-5", } as const; export type AnthropicModelModel = (typeof AnthropicModelModel)[keyof typeof AnthropicModelModel]; diff --git a/src/api/types/AnthropicModelReasoningEffort.ts b/src/api/types/AnthropicModelReasoningEffort.ts new file mode 100644 index 00000000..2ab23745 --- /dev/null +++ b/src/api/types/AnthropicModelReasoningEffort.ts @@ -0,0 +1,17 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * Reasoning effort for claude-haiku-5-5. `none` turns thinking off. `low` to `max` + * use adaptive thinking at that effort; higher effort can add latency before the + * model speaks. Unset means `none`. Rejected for every other model. + */ +export const AnthropicModelReasoningEffort = { + None: "none", + Low: "low", + Medium: "medium", + High: "high", + Xhigh: "xhigh", + Max: "max", +} as const; +export type AnthropicModelReasoningEffort = + (typeof AnthropicModelReasoningEffort)[keyof typeof AnthropicModelReasoningEffort]; diff --git a/src/api/types/AnyscaleModel.ts b/src/api/types/AnyscaleModel.ts index c91d3f2d..2f2e2ba6 100644 --- a/src/api/types/AnyscaleModel.ts +++ b/src/api/types/AnyscaleModel.ts @@ -33,7 +33,7 @@ export interface AnyscaleModel { model: string; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/ApiRequestTool.ts b/src/api/types/ApiRequestTool.ts index 5138ae83..fa58b56c 100644 --- a/src/api/types/ApiRequestTool.ts +++ b/src/api/types/ApiRequestTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface ApiRequestTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.ApiRequestToolMessagesItem[] | undefined; /** diff --git a/src/api/types/AssemblyAiTranscriber.ts b/src/api/types/AssemblyAiTranscriber.ts index c4dde3d0..294d3ab1 100644 --- a/src/api/types/AssemblyAiTranscriber.ts +++ b/src/api/types/AssemblyAiTranscriber.ts @@ -11,7 +11,8 @@ export interface AssemblyAiTranscriber { /** * Transcripts below this confidence threshold will be discarded. * - * @default 0.4 + * Defaults to 0.4 for legacy streaming models. Universal Pro models do not + * filter by confidence unless this field is explicitly set. */ confidenceThreshold?: number | undefined; /** diff --git a/src/api/types/Assistant.ts b/src/api/types/Assistant.ts index d32897e2..73165416 100644 --- a/src/api/types/Assistant.ts +++ b/src/api/types/Assistant.ts @@ -48,6 +48,7 @@ export interface Assistant { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.AssistantBackgroundSound | undefined; @@ -90,11 +91,7 @@ export interface Assistant { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/AssistantBackgroundSound.ts b/src/api/types/AssistantBackgroundSound.ts index 2cd3696a..f94e2cc7 100644 --- a/src/api/types/AssistantBackgroundSound.ts +++ b/src/api/types/AssistantBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type AssistantBackgroundSound = Vapi.AssistantBackgroundSoundZero | string; diff --git a/src/api/types/AssistantBackgroundSoundZero.ts b/src/api/types/AssistantBackgroundSoundZero.ts index 14b00577..234508fb 100644 --- a/src/api/types/AssistantBackgroundSoundZero.ts +++ b/src/api/types/AssistantBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const AssistantBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type AssistantBackgroundSoundZero = (typeof AssistantBackgroundSoundZero)[keyof typeof AssistantBackgroundSoundZero]; diff --git a/src/api/types/AssistantCredentialsItem.ts b/src/api/types/AssistantCredentialsItem.ts index 857c036b..1c7d87af 100644 --- a/src/api/types/AssistantCredentialsItem.ts +++ b/src/api/types/AssistantCredentialsItem.ts @@ -50,6 +50,7 @@ export type AssistantCredentialsItem = | Vapi.AssistantCredentialsItem.Mistral | Vapi.AssistantCredentialsItem.Speechmatics | Vapi.AssistantCredentialsItem.Soniox + | Vapi.AssistantCredentialsItem.Reson8 | Vapi.AssistantCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace AssistantCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace AssistantCredentialsItem { | Vapi.AssistantCredentialsItem.Mistral | Vapi.AssistantCredentialsItem.Speechmatics | Vapi.AssistantCredentialsItem.Soniox + | Vapi.AssistantCredentialsItem.Reson8 | Vapi.AssistantCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/AssistantDraft.ts b/src/api/types/AssistantDraft.ts index 527fab6a..03865e64 100644 --- a/src/api/types/AssistantDraft.ts +++ b/src/api/types/AssistantDraft.ts @@ -44,6 +44,7 @@ export interface AssistantDraft { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.AssistantDraftBackgroundSound | undefined; @@ -79,11 +80,7 @@ export interface AssistantDraft { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/AssistantDraftBackgroundSound.ts b/src/api/types/AssistantDraftBackgroundSound.ts index 4c51401b..0605cea2 100644 --- a/src/api/types/AssistantDraftBackgroundSound.ts +++ b/src/api/types/AssistantDraftBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type AssistantDraftBackgroundSound = Vapi.AssistantDraftBackgroundSoundZero | string; diff --git a/src/api/types/AssistantDraftBackgroundSoundZero.ts b/src/api/types/AssistantDraftBackgroundSoundZero.ts index ac889997..f1571806 100644 --- a/src/api/types/AssistantDraftBackgroundSoundZero.ts +++ b/src/api/types/AssistantDraftBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const AssistantDraftBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type AssistantDraftBackgroundSoundZero = (typeof AssistantDraftBackgroundSoundZero)[keyof typeof AssistantDraftBackgroundSoundZero]; diff --git a/src/api/types/AssistantDraftCredentialsItem.ts b/src/api/types/AssistantDraftCredentialsItem.ts index 51e2043d..f18be6fc 100644 --- a/src/api/types/AssistantDraftCredentialsItem.ts +++ b/src/api/types/AssistantDraftCredentialsItem.ts @@ -50,6 +50,7 @@ export type AssistantDraftCredentialsItem = | Vapi.AssistantDraftCredentialsItem.Mistral | Vapi.AssistantDraftCredentialsItem.Speechmatics | Vapi.AssistantDraftCredentialsItem.Soniox + | Vapi.AssistantDraftCredentialsItem.Reson8 | Vapi.AssistantDraftCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantDraftCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantDraftCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace AssistantDraftCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace AssistantDraftCredentialsItem { | Vapi.AssistantDraftCredentialsItem.Mistral | Vapi.AssistantDraftCredentialsItem.Speechmatics | Vapi.AssistantDraftCredentialsItem.Soniox + | Vapi.AssistantDraftCredentialsItem.Reson8 | Vapi.AssistantDraftCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantDraftCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantDraftCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/AssistantDraftTranscriber.ts b/src/api/types/AssistantDraftTranscriber.ts index 777baed7..52137330 100644 --- a/src/api/types/AssistantDraftTranscriber.ts +++ b/src/api/types/AssistantDraftTranscriber.ts @@ -19,6 +19,7 @@ export type AssistantDraftTranscriber = | Vapi.AssistantDraftTranscriber.Cartesia | Vapi.AssistantDraftTranscriber.Soniox | Vapi.AssistantDraftTranscriber.Xai + | Vapi.AssistantDraftTranscriber.Reson8 | Vapi.AssistantDraftTranscriber.Vapi; export namespace AssistantDraftTranscriber { @@ -74,6 +75,10 @@ export namespace AssistantDraftTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/AssistantDraftVoice.ts b/src/api/types/AssistantDraftVoice.ts index 7067276b..05c6c368 100644 --- a/src/api/types/AssistantDraftVoice.ts +++ b/src/api/types/AssistantDraftVoice.ts @@ -19,7 +19,6 @@ export type AssistantDraftVoice = | Vapi.AssistantDraftVoice.Wellsaid | Vapi.AssistantDraftVoice.RimeAi | Vapi.AssistantDraftVoice.SmallestAi - | Vapi.AssistantDraftVoice.Tavus | Vapi.AssistantDraftVoice.Vapi | Vapi.AssistantDraftVoice.Sesame | Vapi.AssistantDraftVoice.Inworld @@ -80,10 +79,6 @@ export namespace AssistantDraftVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/AssistantHookAssistantSpeechInterrupted.ts b/src/api/types/AssistantHookAssistantSpeechInterrupted.ts deleted file mode 100644 index 28185de9..00000000 --- a/src/api/types/AssistantHookAssistantSpeechInterrupted.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type AssistantHookAssistantSpeechInterrupted = unknown; diff --git a/src/api/types/AssistantHookCallEnding.ts b/src/api/types/AssistantHookCallEnding.ts deleted file mode 100644 index 643d3496..00000000 --- a/src/api/types/AssistantHookCallEnding.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type AssistantHookCallEnding = unknown; diff --git a/src/api/types/AssistantHookCustomerSpeechInterrupted.ts b/src/api/types/AssistantHookCustomerSpeechInterrupted.ts deleted file mode 100644 index abeea51f..00000000 --- a/src/api/types/AssistantHookCustomerSpeechInterrupted.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type AssistantHookCustomerSpeechInterrupted = unknown; diff --git a/src/api/types/AssistantManagedConflictResponseDto.ts b/src/api/types/AssistantManagedConflictResponseDto.ts new file mode 100644 index 00000000..895209bf --- /dev/null +++ b/src/api/types/AssistantManagedConflictResponseDto.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface AssistantManagedConflictResponseDto { + /** Vapi for CX manages the assistant. The lock refuses writes to the assistant itself (update, replace, delete, restore, version delete, traffic splits) and to outcomes, monitors and structured outputs that link or unlink it. It doesn't cover what changes a call without writing the assistant: call-level assistantOverrides or assistantVersion, squad member pins and overrides, which phone number points at it, edits to the tools or knowledge bases it references, or Vapi's own model-retirement sweep. */ + error: Vapi.AssistantManagedConflictResponseDtoError; + /** Why the write was rejected and how to make the change in Vapi for CX instead: the agent link, the Vapi for CX MCP URL with the steps to connect it, and which of its tools to call. */ + message: string; + vapiAgents: Vapi.AssistantManagedVapiAgentsDto; +} diff --git a/src/api/types/AssistantManagedConflictResponseDtoError.ts b/src/api/types/AssistantManagedConflictResponseDtoError.ts new file mode 100644 index 00000000..013547f1 --- /dev/null +++ b/src/api/types/AssistantManagedConflictResponseDtoError.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Vapi for CX manages the assistant. The lock refuses writes to the assistant itself (update, replace, delete, restore, version delete, traffic splits) and to outcomes, monitors and structured outputs that link or unlink it. It doesn't cover what changes a call without writing the assistant: call-level assistantOverrides or assistantVersion, squad member pins and overrides, which phone number points at it, edits to the tools or knowledge bases it references, or Vapi's own model-retirement sweep. */ +export const AssistantManagedConflictResponseDtoError = { + AssistantManagedByVapiAgents: "assistant_managed_by_vapi_agents", +} as const; +export type AssistantManagedConflictResponseDtoError = + (typeof AssistantManagedConflictResponseDtoError)[keyof typeof AssistantManagedConflictResponseDtoError]; diff --git a/src/api/types/AssistantManagedVapiAgentsDto.ts b/src/api/types/AssistantManagedVapiAgentsDto.ts new file mode 100644 index 00000000..af68e655 --- /dev/null +++ b/src/api/types/AssistantManagedVapiAgentsDto.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface AssistantManagedVapiAgentsDto { + /** The Vapi for CX agent that manages the assistant. */ + agentId: string; + /** The agent's page in Vapi for CX. */ + agentUrl: string; + /** The Vapi for CX MCP server, where an AI client makes the change instead. */ + mcpUrl: string; +} diff --git a/src/api/types/AssistantOverrides.ts b/src/api/types/AssistantOverrides.ts index 7ad8d157..95df170d 100644 --- a/src/api/types/AssistantOverrides.ts +++ b/src/api/types/AssistantOverrides.ts @@ -48,6 +48,7 @@ export interface AssistantOverrides { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.AssistantOverridesBackgroundSound | undefined; @@ -93,11 +94,7 @@ export interface AssistantOverrides { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/AssistantOverridesBackgroundSound.ts b/src/api/types/AssistantOverridesBackgroundSound.ts index defd0864..8c72bbf3 100644 --- a/src/api/types/AssistantOverridesBackgroundSound.ts +++ b/src/api/types/AssistantOverridesBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type AssistantOverridesBackgroundSound = Vapi.AssistantOverridesBackgroundSoundZero | string; diff --git a/src/api/types/AssistantOverridesBackgroundSoundZero.ts b/src/api/types/AssistantOverridesBackgroundSoundZero.ts index da0c98c0..b2231e15 100644 --- a/src/api/types/AssistantOverridesBackgroundSoundZero.ts +++ b/src/api/types/AssistantOverridesBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const AssistantOverridesBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type AssistantOverridesBackgroundSoundZero = (typeof AssistantOverridesBackgroundSoundZero)[keyof typeof AssistantOverridesBackgroundSoundZero]; diff --git a/src/api/types/AssistantOverridesCredentialsItem.ts b/src/api/types/AssistantOverridesCredentialsItem.ts index d0c4d478..fdd4c0bf 100644 --- a/src/api/types/AssistantOverridesCredentialsItem.ts +++ b/src/api/types/AssistantOverridesCredentialsItem.ts @@ -50,6 +50,7 @@ export type AssistantOverridesCredentialsItem = | Vapi.AssistantOverridesCredentialsItem.Mistral | Vapi.AssistantOverridesCredentialsItem.Speechmatics | Vapi.AssistantOverridesCredentialsItem.Soniox + | Vapi.AssistantOverridesCredentialsItem.Reson8 | Vapi.AssistantOverridesCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantOverridesCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantOverridesCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace AssistantOverridesCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace AssistantOverridesCredentialsItem { | Vapi.AssistantOverridesCredentialsItem.Mistral | Vapi.AssistantOverridesCredentialsItem.Speechmatics | Vapi.AssistantOverridesCredentialsItem.Soniox + | Vapi.AssistantOverridesCredentialsItem.Reson8 | Vapi.AssistantOverridesCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantOverridesCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantOverridesCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/AssistantOverridesTranscriber.ts b/src/api/types/AssistantOverridesTranscriber.ts index 6a1abbde..dd71ca96 100644 --- a/src/api/types/AssistantOverridesTranscriber.ts +++ b/src/api/types/AssistantOverridesTranscriber.ts @@ -19,6 +19,7 @@ export type AssistantOverridesTranscriber = | Vapi.AssistantOverridesTranscriber.Cartesia | Vapi.AssistantOverridesTranscriber.Soniox | Vapi.AssistantOverridesTranscriber.Xai + | Vapi.AssistantOverridesTranscriber.Reson8 | Vapi.AssistantOverridesTranscriber.Vapi; export namespace AssistantOverridesTranscriber { @@ -74,6 +75,10 @@ export namespace AssistantOverridesTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/AssistantOverridesVoice.ts b/src/api/types/AssistantOverridesVoice.ts index cc442137..3d11978c 100644 --- a/src/api/types/AssistantOverridesVoice.ts +++ b/src/api/types/AssistantOverridesVoice.ts @@ -19,7 +19,6 @@ export type AssistantOverridesVoice = | Vapi.AssistantOverridesVoice.Wellsaid | Vapi.AssistantOverridesVoice.RimeAi | Vapi.AssistantOverridesVoice.SmallestAi - | Vapi.AssistantOverridesVoice.Tavus | Vapi.AssistantOverridesVoice.Vapi | Vapi.AssistantOverridesVoice.Sesame | Vapi.AssistantOverridesVoice.Inworld @@ -80,10 +79,6 @@ export namespace AssistantOverridesVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/AssistantPinnedConflictResponseDto.ts b/src/api/types/AssistantPinnedConflictResponseDto.ts index adfbe6e7..53ff78f4 100644 --- a/src/api/types/AssistantPinnedConflictResponseDto.ts +++ b/src/api/types/AssistantPinnedConflictResponseDto.ts @@ -1,9 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -import type * as Vapi from "../index.js"; - export interface AssistantPinnedConflictResponseDto { - error: Vapi.AssistantPinnedConflictResponseDtoError; /** Human-readable reason the parent-assistant delete was rejected. */ message: string; } diff --git a/src/api/types/AssistantPinnedConflictResponseDtoError.ts b/src/api/types/AssistantPinnedConflictResponseDtoError.ts deleted file mode 100644 index a5a93deb..00000000 --- a/src/api/types/AssistantPinnedConflictResponseDtoError.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export const AssistantPinnedConflictResponseDtoError = { - AssistantPinned: "assistant_pinned", -} as const; -export type AssistantPinnedConflictResponseDtoError = - (typeof AssistantPinnedConflictResponseDtoError)[keyof typeof AssistantPinnedConflictResponseDtoError]; diff --git a/src/api/types/AssistantTranscriber.ts b/src/api/types/AssistantTranscriber.ts index 4dff57c5..26139613 100644 --- a/src/api/types/AssistantTranscriber.ts +++ b/src/api/types/AssistantTranscriber.ts @@ -19,6 +19,7 @@ export type AssistantTranscriber = | Vapi.AssistantTranscriber.Cartesia | Vapi.AssistantTranscriber.Soniox | Vapi.AssistantTranscriber.Xai + | Vapi.AssistantTranscriber.Reson8 | Vapi.AssistantTranscriber.Vapi; export namespace AssistantTranscriber { @@ -74,6 +75,10 @@ export namespace AssistantTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/AssistantUserEditable.ts b/src/api/types/AssistantUserEditable.ts deleted file mode 100644 index c51c6644..00000000 --- a/src/api/types/AssistantUserEditable.ts +++ /dev/null @@ -1,5 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export interface AssistantUserEditable { - serverMessages?: unknown | undefined; -} diff --git a/src/api/types/AssistantVersion.ts b/src/api/types/AssistantVersion.ts index b82ac6d0..5cd17b69 100644 --- a/src/api/types/AssistantVersion.ts +++ b/src/api/types/AssistantVersion.ts @@ -44,6 +44,7 @@ export interface AssistantVersion { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.AssistantVersionBackgroundSound | undefined; @@ -106,11 +107,7 @@ export interface AssistantVersion { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/AssistantVersionBackgroundSound.ts b/src/api/types/AssistantVersionBackgroundSound.ts index 4cc995a1..732d2971 100644 --- a/src/api/types/AssistantVersionBackgroundSound.ts +++ b/src/api/types/AssistantVersionBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type AssistantVersionBackgroundSound = Vapi.AssistantVersionBackgroundSoundZero | string; diff --git a/src/api/types/AssistantVersionBackgroundSoundZero.ts b/src/api/types/AssistantVersionBackgroundSoundZero.ts index f7182d9a..2c5df352 100644 --- a/src/api/types/AssistantVersionBackgroundSoundZero.ts +++ b/src/api/types/AssistantVersionBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const AssistantVersionBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type AssistantVersionBackgroundSoundZero = (typeof AssistantVersionBackgroundSoundZero)[keyof typeof AssistantVersionBackgroundSoundZero]; diff --git a/src/api/types/AssistantVersionCredentialsItem.ts b/src/api/types/AssistantVersionCredentialsItem.ts index f30dcc78..78a90d3d 100644 --- a/src/api/types/AssistantVersionCredentialsItem.ts +++ b/src/api/types/AssistantVersionCredentialsItem.ts @@ -50,6 +50,7 @@ export type AssistantVersionCredentialsItem = | Vapi.AssistantVersionCredentialsItem.Mistral | Vapi.AssistantVersionCredentialsItem.Speechmatics | Vapi.AssistantVersionCredentialsItem.Soniox + | Vapi.AssistantVersionCredentialsItem.Reson8 | Vapi.AssistantVersionCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantVersionCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantVersionCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace AssistantVersionCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace AssistantVersionCredentialsItem { | Vapi.AssistantVersionCredentialsItem.Mistral | Vapi.AssistantVersionCredentialsItem.Speechmatics | Vapi.AssistantVersionCredentialsItem.Soniox + | Vapi.AssistantVersionCredentialsItem.Reson8 | Vapi.AssistantVersionCredentialsItem.GoogleCalendarOauth2Client | Vapi.AssistantVersionCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.AssistantVersionCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/AssistantVersionTranscriber.ts b/src/api/types/AssistantVersionTranscriber.ts index 9558afb2..0ffe1554 100644 --- a/src/api/types/AssistantVersionTranscriber.ts +++ b/src/api/types/AssistantVersionTranscriber.ts @@ -19,6 +19,7 @@ export type AssistantVersionTranscriber = | Vapi.AssistantVersionTranscriber.Cartesia | Vapi.AssistantVersionTranscriber.Soniox | Vapi.AssistantVersionTranscriber.Xai + | Vapi.AssistantVersionTranscriber.Reson8 | Vapi.AssistantVersionTranscriber.Vapi; export namespace AssistantVersionTranscriber { @@ -74,6 +75,10 @@ export namespace AssistantVersionTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/AssistantVersionVoice.ts b/src/api/types/AssistantVersionVoice.ts index be56debb..987fd3e9 100644 --- a/src/api/types/AssistantVersionVoice.ts +++ b/src/api/types/AssistantVersionVoice.ts @@ -19,7 +19,6 @@ export type AssistantVersionVoice = | Vapi.AssistantVersionVoice.Wellsaid | Vapi.AssistantVersionVoice.RimeAi | Vapi.AssistantVersionVoice.SmallestAi - | Vapi.AssistantVersionVoice.Tavus | Vapi.AssistantVersionVoice.Vapi | Vapi.AssistantVersionVoice.Sesame | Vapi.AssistantVersionVoice.Inworld @@ -80,10 +79,6 @@ export namespace AssistantVersionVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/AssistantVoice.ts b/src/api/types/AssistantVoice.ts index 7f7dd28c..a05b5fa3 100644 --- a/src/api/types/AssistantVoice.ts +++ b/src/api/types/AssistantVoice.ts @@ -19,7 +19,6 @@ export type AssistantVoice = | Vapi.AssistantVoice.Wellsaid | Vapi.AssistantVoice.RimeAi | Vapi.AssistantVoice.SmallestAi - | Vapi.AssistantVoice.Tavus | Vapi.AssistantVoice.Vapi | Vapi.AssistantVoice.Sesame | Vapi.AssistantVoice.Inworld @@ -80,10 +79,6 @@ export namespace AssistantVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/BashTool.ts b/src/api/types/BashTool.ts index ff9b8a4c..897699ed 100644 --- a/src/api/types/BashTool.ts +++ b/src/api/types/BashTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface BashTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.BashToolMessagesItem[] | undefined; /** The sub type of tool. */ diff --git a/src/api/types/Call.ts b/src/api/types/Call.ts index 258cae21..20858a01 100644 --- a/src/api/types/Call.ts +++ b/src/api/types/Call.ts @@ -101,7 +101,7 @@ export interface Call { * - Squad, use `squad` * - Workflow, use `workflow` */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */ assistantOverrides?: Vapi.AssistantOverrides | undefined; /** diff --git a/src/api/types/CallEndedReason.ts b/src/api/types/CallEndedReason.ts index d88d644d..77030163 100644 --- a/src/api/types/CallEndedReason.ts +++ b/src/api/types/CallEndedReason.ts @@ -2,6 +2,13 @@ /** This is the explanation for how the call ended. */ export const CallEndedReason = { + CallInProgressErrorVapifaultGuardrailEvaluationFailed: + "call.in-progress.error-vapifault-guardrail-evaluation-failed", + CallInProgressErrorVapifaultGuardrailPlaybackTimeout: "call.in-progress.error-vapifault-guardrail-playback-timeout", + CallInProgressGuardrailBlocked: "call.in-progress.guardrail-blocked", + CallInProgressErrorVapifaultCallStartFailed: "call.in-progress.error-vapifault-call-start-failed", + CallInProgressErrorVapifaultAssistantHandoffStartFailed: + "call.in-progress.error-vapifault-assistant-handoff-start-failed", CallStartErrorNeitherAssistantNorServerSet: "call-start-error-neither-assistant-nor-server-set", AssistantRequestFailed: "assistant-request-failed", AssistantRequestReturnedError: "assistant-request-returned-error", @@ -164,6 +171,19 @@ export const CallEndedReason = { CallInProgressErrorVapifaultXaiTranscriberServerError: "call.in-progress.error-vapifault-xai-transcriber-server-error", CallInProgressErrorVapifaultXaiTranscriberFailed: "call.in-progress.error-vapifault-xai-transcriber-failed", + PipelineErrorReson8TranscriberAuthFailed: "pipeline-error-reson8-transcriber-auth-failed", + PipelineErrorReson8TranscriberRateLimited: "pipeline-error-reson8-transcriber-rate-limited", + PipelineErrorReson8TranscriberInvalidConfig: "pipeline-error-reson8-transcriber-invalid-config", + PipelineErrorReson8TranscriberClosed: "pipeline-error-reson8-transcriber-closed", + PipelineErrorReson8TranscriberFailed: "pipeline-error-reson8-transcriber-failed", + CallInProgressErrorVapifaultReson8TranscriberAuthFailed: + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + CallInProgressErrorVapifaultReson8TranscriberRateLimited: + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + CallInProgressErrorVapifaultReson8TranscriberInvalidConfig: + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + CallInProgressErrorVapifaultReson8TranscriberClosed: "call.in-progress.error-vapifault-reson8-transcriber-closed", + CallInProgressErrorVapifaultReson8TranscriberFailed: "call.in-progress.error-vapifault-reson8-transcriber-failed", PipelineErrorCartesiaTranscriberFailed: "pipeline-error-cartesia-transcriber-failed", CallInProgressErrorVapifaultCartesiaTranscriberFailed: "call.in-progress.error-vapifault-cartesia-transcriber-failed", @@ -625,6 +645,8 @@ export const CallEndedReason = { CallInProgressErrorVapifaultCartesiaRequestedPayment: "call.in-progress.error-vapifault-cartesia-requested-payment", CallInProgressErrorProviderfaultCartesia500ServerError: "call.in-progress.error-providerfault-cartesia-500-server-error", + CallInProgressErrorProviderfaultCartesia502ServerError: + "call.in-progress.error-providerfault-cartesia-502-server-error", CallInProgressErrorProviderfaultCartesia503ServerError: "call.in-progress.error-providerfault-cartesia-503-server-error", CallInProgressErrorProviderfaultCartesia522ServerError: @@ -658,6 +680,7 @@ export const CallEndedReason = { PipelineErrorElevenLabsMaxCharacterLimitExceeded: "pipeline-error-eleven-labs-max-character-limit-exceeded", PipelineErrorElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification: "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + PipelineErrorElevenLabsUnsupportedModel: "pipeline-error-eleven-labs-unsupported-model", PipelineErrorElevenLabs500ServerError: "pipeline-error-eleven-labs-500-server-error", PipelineErrorElevenLabs503ServerError: "pipeline-error-eleven-labs-503-server-error", CallInProgressErrorVapifaultElevenLabsVoiceNotFound: "call.in-progress.error-vapifault-eleven-labs-voice-not-found", @@ -697,6 +720,8 @@ export const CallEndedReason = { "call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded", CallInProgressErrorVapifaultElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification: "call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + CallInProgressErrorVapifaultElevenLabsUnsupportedModel: + "call.in-progress.error-vapifault-eleven-labs-unsupported-model", CallInProgressErrorProviderfaultElevenLabsSystemBusyAndRequestedUpgrade: "call.in-progress.error-providerfault-eleven-labs-system-busy-and-requested-upgrade", CallInProgressErrorProviderfaultElevenLabsBlockedConcurrentRequestsAndRequestedUpgrade: diff --git a/src/api/types/CallHealthDashboardAffectedCallDto.ts b/src/api/types/CallHealthDashboardAffectedCallDto.ts new file mode 100644 index 00000000..04c72f17 --- /dev/null +++ b/src/api/types/CallHealthDashboardAffectedCallDto.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardAffectedCallDto { + callId: string; + assistantId: string; + /** Call completion time (endedAt), never startedAt. */ + callTime: string; + callAvailability: Vapi.CallHealthDashboardAffectedCallDtoCallAvailability; +} diff --git a/src/api/types/CallHealthDashboardAffectedCallDtoCallAvailability.ts b/src/api/types/CallHealthDashboardAffectedCallDtoCallAvailability.ts new file mode 100644 index 00000000..545cd23f --- /dev/null +++ b/src/api/types/CallHealthDashboardAffectedCallDtoCallAvailability.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardAffectedCallDtoCallAvailability = { + Available: "available", + Unavailable: "unavailable", +} as const; +export type CallHealthDashboardAffectedCallDtoCallAvailability = + (typeof CallHealthDashboardAffectedCallDtoCallAvailability)[keyof typeof CallHealthDashboardAffectedCallDtoCallAvailability]; diff --git a/src/api/types/CallHealthDashboardAffectedCallsResponseDto.ts b/src/api/types/CallHealthDashboardAffectedCallsResponseDto.ts new file mode 100644 index 00000000..6fa8cde6 --- /dev/null +++ b/src/api/types/CallHealthDashboardAffectedCallsResponseDto.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardAffectedCallsResponseDto { + results: Vapi.CallHealthDashboardAffectedCallDto[]; + nextCursor?: string | undefined; + coverage: Vapi.CallHealthDashboardCoverageDto; +} diff --git a/src/api/types/CallHealthDashboardApiErrorDto.ts b/src/api/types/CallHealthDashboardApiErrorDto.ts new file mode 100644 index 00000000..01922fc0 --- /dev/null +++ b/src/api/types/CallHealthDashboardApiErrorDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardApiErrorDto { + code: string; + message: string; + requestId: string; + retryable: boolean; +} diff --git a/src/api/types/CallHealthDashboardAssignmentCoverageDto.ts b/src/api/types/CallHealthDashboardAssignmentCoverageDto.ts new file mode 100644 index 00000000..6ce8ea8e --- /dev/null +++ b/src/api/types/CallHealthDashboardAssignmentCoverageDto.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardAssignmentCoverageDto { + pending: number; + unmatched: number; + skipped: number; + unavailable: number; + error: number; + coverageGapCount: number; +} diff --git a/src/api/types/CallHealthDashboardAssistantGoalsDto.ts b/src/api/types/CallHealthDashboardAssistantGoalsDto.ts new file mode 100644 index 00000000..06c85d7d --- /dev/null +++ b/src/api/types/CallHealthDashboardAssistantGoalsDto.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 CallHealthDashboardAssistantGoalsDto { + /** Requested assistant identity whose current published row remains visible. */ + assistantId: string; + /** Empty when this visible assistant has no goals; no goal is automatically selected. */ + goals: Vapi.CallHealthDashboardGoalOptionDto[]; +} diff --git a/src/api/types/CallHealthDashboardAssistantGoalsResponseDto.ts b/src/api/types/CallHealthDashboardAssistantGoalsResponseDto.ts new file mode 100644 index 00000000..bb3547f4 --- /dev/null +++ b/src/api/types/CallHealthDashboardAssistantGoalsResponseDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardAssistantGoalsResponseDto { + /** Complete requested visible assistant cohort, including assistants with no goal options. */ + results: Vapi.CallHealthDashboardAssistantGoalsDto[]; +} diff --git a/src/api/types/CallHealthDashboardAssistantListResponseDto.ts b/src/api/types/CallHealthDashboardAssistantListResponseDto.ts new file mode 100644 index 00000000..c357c332 --- /dev/null +++ b/src/api/types/CallHealthDashboardAssistantListResponseDto.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 CallHealthDashboardAssistantListResponseDto { + /** Visible nondeleted assistants in ascending ID transport order; sort the exhausted result in the frontend. */ + results: Vapi.CallHealthDashboardAssistantOverviewDto[]; + /** Opaque ID continuation bound to tenant, completion window and filters. */ + nextCursor?: string | undefined; + /** Received-work processing coverage, separate from analyzed goal results. */ + coverage: Vapi.CallHealthDashboardCoverageDto; +} diff --git a/src/api/types/CallHealthDashboardAssistantOverviewDto.ts b/src/api/types/CallHealthDashboardAssistantOverviewDto.ts new file mode 100644 index 00000000..46b6c6fc --- /dev/null +++ b/src/api/types/CallHealthDashboardAssistantOverviewDto.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 CallHealthDashboardAssistantOverviewDto { + /** Current permitted assistant metadata, fetched in a batch. */ + assistant: Vapi.CallHealthDashboardAssistantReferenceDto; + /** Every row represents an explicitly selected, tenant-owned assistant goal. */ + goalDefinition: Vapi.CallHealthDashboardGoalDefinitionDto; + /** Window totals for the selected goal, including zero-result assistants. */ + goal: Vapi.CallHealthDashboardGoalSummaryDto; +} diff --git a/src/api/types/CallHealthDashboardAssistantReferenceDto.ts b/src/api/types/CallHealthDashboardAssistantReferenceDto.ts new file mode 100644 index 00000000..788c1aa4 --- /dev/null +++ b/src/api/types/CallHealthDashboardAssistantReferenceDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardAssistantReferenceDto { + id: string; + name?: string | undefined; + /** Current assistant.latest_version label; omitted when unavailable, never a goal revision. */ + latestVersion?: string | undefined; +} diff --git a/src/api/types/CallHealthDashboardAssistantSummaryResponseDto.ts b/src/api/types/CallHealthDashboardAssistantSummaryResponseDto.ts new file mode 100644 index 00000000..24cd7def --- /dev/null +++ b/src/api/types/CallHealthDashboardAssistantSummaryResponseDto.ts @@ -0,0 +1,17 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardAssistantSummaryResponseDto { + /** Current permitted assistant metadata, fetched in a batch. */ + assistant: Vapi.CallHealthDashboardAssistantReferenceDto; + /** Every row represents an explicitly selected, tenant-owned assistant goal. */ + goalDefinition: Vapi.CallHealthDashboardGoalDefinitionDto; + /** Window totals for the selected goal, including zero-result assistants. */ + goal: Vapi.CallHealthDashboardGoalSummaryDto; + /** One ascending contiguous page of UTC dates, including empty buckets. */ + results: Vapi.CallHealthDashboardGoalDailyDto[]; + seriesPage: Vapi.CallHealthDashboardSeriesPageDto; + /** Received-work processing coverage, separate from success rates. */ + coverage: Vapi.CallHealthDashboardCoverageDto; +} diff --git a/src/api/types/CallHealthDashboardClassificationCoverageDto.ts b/src/api/types/CallHealthDashboardClassificationCoverageDto.ts new file mode 100644 index 00000000..818c9be0 --- /dev/null +++ b/src/api/types/CallHealthDashboardClassificationCoverageDto.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardClassificationCoverageDto { + pending: number; + unavailable: number; + skipped: number; + error: number; + excluded: number; + complete: number; + partial: number; +} diff --git a/src/api/types/CallHealthDashboardCoverageDto.ts b/src/api/types/CallHealthDashboardCoverageDto.ts new file mode 100644 index 00000000..c4459a03 --- /dev/null +++ b/src/api/types/CallHealthDashboardCoverageDto.ts @@ -0,0 +1,15 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardCoverageDto { + asOf: string; + intake: Vapi.CallHealthDashboardIntakeCoverageDto; + goal: Vapi.CallHealthDashboardGoalGapsDto; + classification: Vapi.CallHealthDashboardClassificationCoverageDto; + assignment: Vapi.CallHealthDashboardAssignmentCoverageDto; + discovery: Vapi.CallHealthDashboardDiscoveryCoverageDto; + sweep: Vapi.CallHealthDashboardSweepCoverageDto; + /** Completeness of received authorized work only; never source delivery coverage. */ + countsComplete: boolean; +} diff --git a/src/api/types/CallHealthDashboardDiscoveryCoverageDto.ts b/src/api/types/CallHealthDashboardDiscoveryCoverageDto.ts new file mode 100644 index 00000000..e1af40f2 --- /dev/null +++ b/src/api/types/CallHealthDashboardDiscoveryCoverageDto.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardDiscoveryCoverageDto { + pendingIssueCategoryCount: number; + blockedIssueCategoryCount: number; +} diff --git a/src/api/types/CallHealthDashboardFacetsDto.ts b/src/api/types/CallHealthDashboardFacetsDto.ts new file mode 100644 index 00000000..07a9dcd9 --- /dev/null +++ b/src/api/types/CallHealthDashboardFacetsDto.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardFacetsDto { + statuses: Vapi.CallHealthDashboardFacetsDtoStatusesItem[]; +} diff --git a/src/api/types/CallHealthDashboardFacetsDtoStatusesItem.ts b/src/api/types/CallHealthDashboardFacetsDtoStatusesItem.ts new file mode 100644 index 00000000..ddcaecde --- /dev/null +++ b/src/api/types/CallHealthDashboardFacetsDtoStatusesItem.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardFacetsDtoStatusesItem = { + Active: "active", + Resolved: "resolved", + Dismissed: "dismissed", +} as const; +export type CallHealthDashboardFacetsDtoStatusesItem = + (typeof CallHealthDashboardFacetsDtoStatusesItem)[keyof typeof CallHealthDashboardFacetsDtoStatusesItem]; diff --git a/src/api/types/CallHealthDashboardGoalDailyDto.ts b/src/api/types/CallHealthDashboardGoalDailyDto.ts new file mode 100644 index 00000000..e479caa1 --- /dev/null +++ b/src/api/types/CallHealthDashboardGoalDailyDto.ts @@ -0,0 +1,21 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardGoalDailyDto { + registeredCallCount: number; + /** Calls with an accepted semantic eligibility decision and binary goal outcome. */ + eligibleCallCount: number; + /** Accepted semantic exclusions; absent from the goal denominator. */ + ineligibleCallCount: number; + /** No accepted eligibility decision, including technical or privacy exclusions. */ + unassessedCallCount: number; + goalMetCount: number; + goalNotMetCount: number; + evaluatedCallCount: number; + /** Accepted current-goal results, including ineligible; independent of issue processing. */ + analyzedCallCount: number; + /** Goal-met / evaluatedCallCount; omitted when there are no binary outcomes. */ + goalMetRate?: number | undefined; + goalNotMetRate?: number | undefined; + /** UTC calendar date; the first and last buckets are clipped to the requested window. */ + date: string; +} diff --git a/src/api/types/CallHealthDashboardGoalDefinitionDto.ts b/src/api/types/CallHealthDashboardGoalDefinitionDto.ts new file mode 100644 index 00000000..cc525b5e --- /dev/null +++ b/src/api/types/CallHealthDashboardGoalDefinitionDto.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardGoalDefinitionDto { + /** Explicit selected goal identity, stable across its revisions. */ + goalId: string; + /** Current visible revision of the selected goal. */ + succeedsWhen: string; + /** Current optional semantic exclusions. */ + leaveOut?: string | undefined; +} diff --git a/src/api/types/CallHealthDashboardGoalGapsDto.ts b/src/api/types/CallHealthDashboardGoalGapsDto.ts new file mode 100644 index 00000000..48661cc3 --- /dev/null +++ b/src/api/types/CallHealthDashboardGoalGapsDto.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardGoalGapsDto { + pending: number; + unavailable: number; + skipped: number; + error: number; + excluded: number; +} diff --git a/src/api/types/CallHealthDashboardGoalOptionDto.ts b/src/api/types/CallHealthDashboardGoalOptionDto.ts new file mode 100644 index 00000000..226077ff --- /dev/null +++ b/src/api/types/CallHealthDashboardGoalOptionDto.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardGoalOptionDto { + /** Explicit selected goal identity, stable across its revisions. */ + goalId: string; + /** Current visible revision of the selected goal. */ + succeedsWhen: string; + /** Current optional semantic exclusions. */ + leaveOut?: string | undefined; + /** Current revision for display; clients select by stable goalId, never by this version. */ + goalVersion: string; +} diff --git a/src/api/types/CallHealthDashboardGoalSummaryDto.ts b/src/api/types/CallHealthDashboardGoalSummaryDto.ts new file mode 100644 index 00000000..ece24beb --- /dev/null +++ b/src/api/types/CallHealthDashboardGoalSummaryDto.ts @@ -0,0 +1,19 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardGoalSummaryDto { + registeredCallCount: number; + /** Calls with an accepted semantic eligibility decision and binary goal outcome. */ + eligibleCallCount: number; + /** Accepted semantic exclusions; absent from the goal denominator. */ + ineligibleCallCount: number; + /** No accepted eligibility decision, including technical or privacy exclusions. */ + unassessedCallCount: number; + goalMetCount: number; + goalNotMetCount: number; + evaluatedCallCount: number; + /** Accepted current-goal results, including ineligible; independent of issue processing. */ + analyzedCallCount: number; + /** Goal-met / evaluatedCallCount; omitted when there are no binary outcomes. */ + goalMetRate?: number | undefined; + goalNotMetRate?: number | undefined; +} diff --git a/src/api/types/CallHealthDashboardIntakeCoverageDto.ts b/src/api/types/CallHealthDashboardIntakeCoverageDto.ts new file mode 100644 index 00000000..2a5c5d66 --- /dev/null +++ b/src/api/types/CallHealthDashboardIntakeCoverageDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardIntakeCoverageDto { + deliveryMode: Vapi.CallHealthDashboardIntakeCoverageDtoDeliveryMode; + endToEndCoverage: Vapi.CallHealthDashboardIntakeCoverageDtoEndToEndCoverage; +} diff --git a/src/api/types/CallHealthDashboardIntakeCoverageDtoDeliveryMode.ts b/src/api/types/CallHealthDashboardIntakeCoverageDtoDeliveryMode.ts new file mode 100644 index 00000000..e7421f82 --- /dev/null +++ b/src/api/types/CallHealthDashboardIntakeCoverageDtoDeliveryMode.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardIntakeCoverageDtoDeliveryMode = { + BestEffort: "bestEffort", +} as const; +export type CallHealthDashboardIntakeCoverageDtoDeliveryMode = + (typeof CallHealthDashboardIntakeCoverageDtoDeliveryMode)[keyof typeof CallHealthDashboardIntakeCoverageDtoDeliveryMode]; diff --git a/src/api/types/CallHealthDashboardIntakeCoverageDtoEndToEndCoverage.ts b/src/api/types/CallHealthDashboardIntakeCoverageDtoEndToEndCoverage.ts new file mode 100644 index 00000000..3e6d5961 --- /dev/null +++ b/src/api/types/CallHealthDashboardIntakeCoverageDtoEndToEndCoverage.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardIntakeCoverageDtoEndToEndCoverage = { + Unknown: "unknown", +} as const; +export type CallHealthDashboardIntakeCoverageDtoEndToEndCoverage = + (typeof CallHealthDashboardIntakeCoverageDtoEndToEndCoverage)[keyof typeof CallHealthDashboardIntakeCoverageDtoEndToEndCoverage]; diff --git a/src/api/types/CallHealthDashboardIssueActivityDto.ts b/src/api/types/CallHealthDashboardIssueActivityDto.ts new file mode 100644 index 00000000..46959a22 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueActivityDto.ts @@ -0,0 +1,16 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardIssueActivityDto { + /** Existing issue version after this transition; also the per-issue activity identity. */ + rowVersion: number; + /** User resolve, dismiss or restore, or the system reopen written when a new match reopens a resolved issue. */ + action: Vapi.CallHealthDashboardIssueActivityDtoAction; + /** Omitted for private-key actors and system entries; names/emails are not copied. */ + actorUserId?: string | undefined; + /** Optional team-visible comment; omitted after privacy scrubbing. */ + comment?: string | undefined; + /** Database action time; ordering uses rowVersion rather than rounded timestamps. */ + createdAt: string; +} diff --git a/src/api/types/CallHealthDashboardIssueActivityDtoAction.ts b/src/api/types/CallHealthDashboardIssueActivityDtoAction.ts new file mode 100644 index 00000000..5f7fcac9 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueActivityDtoAction.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +/** User resolve, dismiss or restore, or the system reopen written when a new match reopens a resolved issue. */ +export const CallHealthDashboardIssueActivityDtoAction = { + Resolve: "resolve", + Dismiss: "dismiss", + Restore: "restore", + Reopen: "reopen", +} as const; +export type CallHealthDashboardIssueActivityDtoAction = + (typeof CallHealthDashboardIssueActivityDtoAction)[keyof typeof CallHealthDashboardIssueActivityDtoAction]; diff --git a/src/api/types/CallHealthDashboardIssueActivityListResponseDto.ts b/src/api/types/CallHealthDashboardIssueActivityListResponseDto.ts new file mode 100644 index 00000000..6c533bef --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueActivityListResponseDto.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 CallHealthDashboardIssueActivityListResponseDto { + /** Newest issue versions first; this is shared team activity, not per-user feedback. */ + results: Vapi.CallHealthDashboardIssueActivityDto[]; + /** Signed continuation bound to the authenticated organization, issue and activity contract. */ + nextCursor?: string | undefined; +} diff --git a/src/api/types/CallHealthDashboardIssueCoverageDto.ts b/src/api/types/CallHealthDashboardIssueCoverageDto.ts new file mode 100644 index 00000000..1f7d0ac1 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueCoverageDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardIssueCoverageDto { + state: Vapi.CallHealthDashboardIssueCoverageDtoState; + asOf: string; +} diff --git a/src/api/types/CallHealthDashboardIssueCoverageDtoState.ts b/src/api/types/CallHealthDashboardIssueCoverageDtoState.ts new file mode 100644 index 00000000..f908b2bd --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueCoverageDtoState.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardIssueCoverageDtoState = { + Complete: "complete", + Partial: "partial", + Sweeping: "sweeping", + Blocked: "blocked", +} as const; +export type CallHealthDashboardIssueCoverageDtoState = + (typeof CallHealthDashboardIssueCoverageDtoState)[keyof typeof CallHealthDashboardIssueCoverageDtoState]; diff --git a/src/api/types/CallHealthDashboardIssueDailyDto.ts b/src/api/types/CallHealthDashboardIssueDailyDto.ts new file mode 100644 index 00000000..34b5e778 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueDailyDto.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardIssueDailyDto { + /** UTC calendar date, with boundary buckets clipped to the requested window. */ + date: string; + /** Distinct visible calls matching this issue in the bucket. */ + affectedCallCount: number; + /** All accepted current-goal outcomes for the issue's assistant in the bucket. */ + analyzedCallCount: number; + /** affectedCallCount / analyzedCallCount; omitted for a zero denominator. */ + affectedCallRate?: number | undefined; +} diff --git a/src/api/types/CallHealthDashboardIssueDefinitionDto.ts b/src/api/types/CallHealthDashboardIssueDefinitionDto.ts new file mode 100644 index 00000000..33c74a14 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueDefinitionDto.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardIssueDefinitionDto { + applicability: string | null; + problem: string | null; + createdTaxonomyVersion: number | null; +} diff --git a/src/api/types/CallHealthDashboardIssueDetailResponseDto.ts b/src/api/types/CallHealthDashboardIssueDetailResponseDto.ts new file mode 100644 index 00000000..e92ff777 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueDetailResponseDto.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 CallHealthDashboardIssueDetailResponseDto { + issue: Vapi.CallHealthDashboardIssueSummaryDto; + seriesPage: Vapi.CallHealthDashboardSeriesPageDto; + definition: Vapi.CallHealthDashboardIssueDefinitionDto; + coverage: Vapi.CallHealthDashboardCoverageDto; +} diff --git a/src/api/types/CallHealthDashboardIssueListResponseDto.ts b/src/api/types/CallHealthDashboardIssueListResponseDto.ts new file mode 100644 index 00000000..654513d7 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueListResponseDto.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 CallHealthDashboardIssueListResponseDto { + results: Vapi.CallHealthDashboardIssueSummaryDto[]; + /** Every row's dailySeries represents this same date page. */ + seriesPage: Vapi.CallHealthDashboardSeriesPageDto; + facets: Vapi.CallHealthDashboardFacetsDto; + nextCursor?: string | undefined; + coverage: Vapi.CallHealthDashboardCoverageDto; +} diff --git a/src/api/types/CallHealthDashboardIssueReferenceDto.ts b/src/api/types/CallHealthDashboardIssueReferenceDto.ts new file mode 100644 index 00000000..8b554074 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueReferenceDto.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 CallHealthDashboardIssueReferenceDto { + id: string; + name: string; + status: Vapi.CallHealthDashboardIssueReferenceDtoStatus; + rowVersion: number; +} diff --git a/src/api/types/CallHealthDashboardIssueReferenceDtoStatus.ts b/src/api/types/CallHealthDashboardIssueReferenceDtoStatus.ts new file mode 100644 index 00000000..b8c2f748 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueReferenceDtoStatus.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardIssueReferenceDtoStatus = { + Active: "active", + Resolved: "resolved", + Dismissed: "dismissed", +} as const; +export type CallHealthDashboardIssueReferenceDtoStatus = + (typeof CallHealthDashboardIssueReferenceDtoStatus)[keyof typeof CallHealthDashboardIssueReferenceDtoStatus]; diff --git a/src/api/types/CallHealthDashboardIssueSummaryDto.ts b/src/api/types/CallHealthDashboardIssueSummaryDto.ts new file mode 100644 index 00000000..a00bb19f --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueSummaryDto.ts @@ -0,0 +1,23 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardIssueSummaryDto { + id: string; + name: string; + status: Vapi.CallHealthDashboardIssueSummaryDtoStatus; + rowVersion: number; + /** Owning goal identity; issue-ID routes derive this selection from the issue. */ + goalId: string; + summary: string; + assistant: Vapi.CallHealthDashboardAssistantReferenceDto; + affectedCallCount: number; + /** Same assistant/current-goal/window denominator used by the goal reads. */ + analyzedCallCount: number; + /** Distinct calls matching this issue / analyzedCallCount; absent at zero. */ + affectedCallRate?: number | undefined; + /** One ascending contiguous page of UTC buckets; memberships across issues are not unique calls. */ + dailySeries: Vapi.CallHealthDashboardIssueDailyDto[]; + lastSeenAt?: string | undefined; + coverage: Vapi.CallHealthDashboardIssueCoverageDto; +} diff --git a/src/api/types/CallHealthDashboardIssueSummaryDtoStatus.ts b/src/api/types/CallHealthDashboardIssueSummaryDtoStatus.ts new file mode 100644 index 00000000..644c9670 --- /dev/null +++ b/src/api/types/CallHealthDashboardIssueSummaryDtoStatus.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardIssueSummaryDtoStatus = { + Active: "active", + Resolved: "resolved", + Dismissed: "dismissed", +} as const; +export type CallHealthDashboardIssueSummaryDtoStatus = + (typeof CallHealthDashboardIssueSummaryDtoStatus)[keyof typeof CallHealthDashboardIssueSummaryDtoStatus]; diff --git a/src/api/types/CallHealthDashboardSeriesPageDto.ts b/src/api/types/CallHealthDashboardSeriesPageDto.ts new file mode 100644 index 00000000..851db280 --- /dev/null +++ b/src/api/types/CallHealthDashboardSeriesPageDto.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 CallHealthDashboardSeriesPageDto { + /** Full resolved completion window used by every total, rate and coverage count. */ + window: Vapi.CallHealthDashboardWindowDto; + /** Clipped completion window represented by this page's daily buckets. */ + pageWindow: Vapi.CallHealthDashboardWindowDto; + /** Continue chart dates only; independent of the issue-row nextCursor. */ + nextCursor?: string | undefined; +} diff --git a/src/api/types/CallHealthDashboardSweepCoverageDto.ts b/src/api/types/CallHealthDashboardSweepCoverageDto.ts new file mode 100644 index 00000000..43c79044 --- /dev/null +++ b/src/api/types/CallHealthDashboardSweepCoverageDto.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface CallHealthDashboardSweepCoverageDto { + state: Vapi.CallHealthDashboardSweepCoverageDtoState; +} diff --git a/src/api/types/CallHealthDashboardSweepCoverageDtoState.ts b/src/api/types/CallHealthDashboardSweepCoverageDtoState.ts new file mode 100644 index 00000000..e1f260a9 --- /dev/null +++ b/src/api/types/CallHealthDashboardSweepCoverageDtoState.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardSweepCoverageDtoState = { + Idle: "idle", + Enumerating: "enumerating", + Processing: "processing", + Deduplicating: "deduplicating", + Blocked: "blocked", +} as const; +export type CallHealthDashboardSweepCoverageDtoState = + (typeof CallHealthDashboardSweepCoverageDtoState)[keyof typeof CallHealthDashboardSweepCoverageDtoState]; diff --git a/src/api/types/CallHealthDashboardTriageRequestDto.ts b/src/api/types/CallHealthDashboardTriageRequestDto.ts new file mode 100644 index 00000000..bdefde31 --- /dev/null +++ b/src/api/types/CallHealthDashboardTriageRequestDto.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 CallHealthDashboardTriageRequestDto { + action: Vapi.CallHealthDashboardTriageRequestDtoAction; + expectedRowVersion: number; + /** Trimmed; at most 2,048 UTF-16 code units. Empty comments are omitted from activity. */ + comment?: string | undefined; +} diff --git a/src/api/types/CallHealthDashboardTriageRequestDtoAction.ts b/src/api/types/CallHealthDashboardTriageRequestDtoAction.ts new file mode 100644 index 00000000..d44416fc --- /dev/null +++ b/src/api/types/CallHealthDashboardTriageRequestDtoAction.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const CallHealthDashboardTriageRequestDtoAction = { + Resolve: "resolve", + Dismiss: "dismiss", + Restore: "restore", +} as const; +export type CallHealthDashboardTriageRequestDtoAction = + (typeof CallHealthDashboardTriageRequestDtoAction)[keyof typeof CallHealthDashboardTriageRequestDtoAction]; diff --git a/src/api/types/CallHealthDashboardWindowDto.ts b/src/api/types/CallHealthDashboardWindowDto.ts new file mode 100644 index 00000000..be69e9cd --- /dev/null +++ b/src/api/types/CallHealthDashboardWindowDto.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CallHealthDashboardWindowDto { + callTimeGte: string; + callTimeLt: string; +} diff --git a/src/api/types/CartesiaVoiceLanguage.ts b/src/api/types/CartesiaVoiceLanguage.ts index a4c9e17e..3576d78e 100644 --- a/src/api/types/CartesiaVoiceLanguage.ts +++ b/src/api/types/CartesiaVoiceLanguage.ts @@ -29,6 +29,7 @@ export const CartesiaVoiceLanguage = { Ms: "ms", Nl: "nl", No: "no", + Or: "or", Pa: "pa", Pl: "pl", Pt: "pt", @@ -42,6 +43,7 @@ export const CartesiaVoiceLanguage = { Tl: "tl", Tr: "tr", Uk: "uk", + Ur: "ur", Vi: "vi", Zh: "zh", } as const; diff --git a/src/api/types/CartesiaVoiceModel.ts b/src/api/types/CartesiaVoiceModel.ts index 94b8dc3d..3bde0acb 100644 --- a/src/api/types/CartesiaVoiceModel.ts +++ b/src/api/types/CartesiaVoiceModel.ts @@ -4,6 +4,8 @@ export const CartesiaVoiceModel = { Sonic35: "sonic-3.5", Sonic3520260504: "sonic-3.5-2026-05-04", + Sonic36: "sonic-3.6", + Sonic3620260827: "sonic-3.6-2026-08-27", Sonic3: "sonic-3", Sonic320260112: "sonic-3-2026-01-12", Sonic320251027: "sonic-3-2025-10-27", diff --git a/src/api/types/CerebrasModel.ts b/src/api/types/CerebrasModel.ts index b69ebcbc..c29e1ed7 100644 --- a/src/api/types/CerebrasModel.ts +++ b/src/api/types/CerebrasModel.ts @@ -33,7 +33,7 @@ export interface CerebrasModel { model: Vapi.CerebrasModelModel; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/Chat.ts b/src/api/types/Chat.ts index 706a910b..2812454c 100644 --- a/src/api/types/Chat.ts +++ b/src/api/types/Chat.ts @@ -6,7 +6,7 @@ export interface Chat { /** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */ assistantId?: string | undefined; /** This is the assistant that will be used for the chat. To use an existing assistant, use `assistantId` instead. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** * These are the variable values that will be used to replace template variables in the assistant messages. * Only variable substitution is supported in chat contexts - other assistant properties cannot be overridden. diff --git a/src/api/types/CodeTool.ts b/src/api/types/CodeTool.ts index c1d9ee1d..d35e1015 100644 --- a/src/api/types/CodeTool.ts +++ b/src/api/types/CodeTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface CodeTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.CodeToolMessagesItem[] | undefined; /** diff --git a/src/api/types/ComputerTool.ts b/src/api/types/ComputerTool.ts index df28ec05..09b0391b 100644 --- a/src/api/types/ComputerTool.ts +++ b/src/api/types/ComputerTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface ComputerTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.ComputerToolMessagesItem[] | undefined; /** The sub type of tool. */ diff --git a/src/api/types/ConversationNodeTranscriber.ts b/src/api/types/ConversationNodeTranscriber.ts index 3d048b76..9934d9c4 100644 --- a/src/api/types/ConversationNodeTranscriber.ts +++ b/src/api/types/ConversationNodeTranscriber.ts @@ -21,6 +21,7 @@ export type ConversationNodeTranscriber = | Vapi.ConversationNodeTranscriber.Cartesia | Vapi.ConversationNodeTranscriber.Soniox | Vapi.ConversationNodeTranscriber.Xai + | Vapi.ConversationNodeTranscriber.Reson8 | Vapi.ConversationNodeTranscriber.Vapi; export namespace ConversationNodeTranscriber { @@ -76,6 +77,10 @@ export namespace ConversationNodeTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/ConversationNodeVoice.ts b/src/api/types/ConversationNodeVoice.ts index feb7ad91..17926385 100644 --- a/src/api/types/ConversationNodeVoice.ts +++ b/src/api/types/ConversationNodeVoice.ts @@ -21,7 +21,6 @@ export type ConversationNodeVoice = | Vapi.ConversationNodeVoice.Wellsaid | Vapi.ConversationNodeVoice.RimeAi | Vapi.ConversationNodeVoice.SmallestAi - | Vapi.ConversationNodeVoice.Tavus | Vapi.ConversationNodeVoice.Vapi | Vapi.ConversationNodeVoice.Sesame | Vapi.ConversationNodeVoice.Inworld @@ -82,10 +81,6 @@ export namespace ConversationNodeVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/CreateAssistantDraftDto.ts b/src/api/types/CreateAssistantDraftDto.ts index 32c267d5..f0aedf96 100644 --- a/src/api/types/CreateAssistantDraftDto.ts +++ b/src/api/types/CreateAssistantDraftDto.ts @@ -44,6 +44,7 @@ export interface CreateAssistantDraftDto { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.CreateAssistantDraftDtoBackgroundSound | undefined; @@ -77,11 +78,7 @@ export interface CreateAssistantDraftDto { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/CreateAssistantDraftDtoBackgroundSound.ts b/src/api/types/CreateAssistantDraftDtoBackgroundSound.ts index fc4f1cf6..a9160505 100644 --- a/src/api/types/CreateAssistantDraftDtoBackgroundSound.ts +++ b/src/api/types/CreateAssistantDraftDtoBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type CreateAssistantDraftDtoBackgroundSound = Vapi.CreateAssistantDraftDtoBackgroundSoundZero | string; diff --git a/src/api/types/CreateAssistantDraftDtoBackgroundSoundZero.ts b/src/api/types/CreateAssistantDraftDtoBackgroundSoundZero.ts index 55a74e93..a8237ebb 100644 --- a/src/api/types/CreateAssistantDraftDtoBackgroundSoundZero.ts +++ b/src/api/types/CreateAssistantDraftDtoBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const CreateAssistantDraftDtoBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type CreateAssistantDraftDtoBackgroundSoundZero = (typeof CreateAssistantDraftDtoBackgroundSoundZero)[keyof typeof CreateAssistantDraftDtoBackgroundSoundZero]; diff --git a/src/api/types/CreateAssistantDraftDtoCredentialsItem.ts b/src/api/types/CreateAssistantDraftDtoCredentialsItem.ts index 061a6839..8f6757af 100644 --- a/src/api/types/CreateAssistantDraftDtoCredentialsItem.ts +++ b/src/api/types/CreateAssistantDraftDtoCredentialsItem.ts @@ -50,6 +50,7 @@ export type CreateAssistantDraftDtoCredentialsItem = | Vapi.CreateAssistantDraftDtoCredentialsItem.Mistral | Vapi.CreateAssistantDraftDtoCredentialsItem.Speechmatics | Vapi.CreateAssistantDraftDtoCredentialsItem.Soniox + | Vapi.CreateAssistantDraftDtoCredentialsItem.Reson8 | Vapi.CreateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.CreateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.CreateAssistantDraftDtoCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace CreateAssistantDraftDtoCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace CreateAssistantDraftDtoCredentialsItem { | Vapi.CreateAssistantDraftDtoCredentialsItem.Mistral | Vapi.CreateAssistantDraftDtoCredentialsItem.Speechmatics | Vapi.CreateAssistantDraftDtoCredentialsItem.Soniox + | Vapi.CreateAssistantDraftDtoCredentialsItem.Reson8 | Vapi.CreateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.CreateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.CreateAssistantDraftDtoCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/CreateAssistantDraftDtoTranscriber.ts b/src/api/types/CreateAssistantDraftDtoTranscriber.ts index 6b7807f7..4b4a6c03 100644 --- a/src/api/types/CreateAssistantDraftDtoTranscriber.ts +++ b/src/api/types/CreateAssistantDraftDtoTranscriber.ts @@ -19,6 +19,7 @@ export type CreateAssistantDraftDtoTranscriber = | Vapi.CreateAssistantDraftDtoTranscriber.Cartesia | Vapi.CreateAssistantDraftDtoTranscriber.Soniox | Vapi.CreateAssistantDraftDtoTranscriber.Xai + | Vapi.CreateAssistantDraftDtoTranscriber.Reson8 | Vapi.CreateAssistantDraftDtoTranscriber.Vapi; export namespace CreateAssistantDraftDtoTranscriber { @@ -74,6 +75,10 @@ export namespace CreateAssistantDraftDtoTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/CreateAssistantDraftDtoVoice.ts b/src/api/types/CreateAssistantDraftDtoVoice.ts index ffcb0cc9..244da3cf 100644 --- a/src/api/types/CreateAssistantDraftDtoVoice.ts +++ b/src/api/types/CreateAssistantDraftDtoVoice.ts @@ -19,7 +19,6 @@ export type CreateAssistantDraftDtoVoice = | Vapi.CreateAssistantDraftDtoVoice.Wellsaid | Vapi.CreateAssistantDraftDtoVoice.RimeAi | Vapi.CreateAssistantDraftDtoVoice.SmallestAi - | Vapi.CreateAssistantDraftDtoVoice.Tavus | Vapi.CreateAssistantDraftDtoVoice.Vapi | Vapi.CreateAssistantDraftDtoVoice.Sesame | Vapi.CreateAssistantDraftDtoVoice.Inworld @@ -80,10 +79,6 @@ export namespace CreateAssistantDraftDtoVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/CreateAssistantDto.ts b/src/api/types/CreateAssistantDto.ts index 5f0285a2..c3d2101f 100644 --- a/src/api/types/CreateAssistantDto.ts +++ b/src/api/types/CreateAssistantDto.ts @@ -48,6 +48,7 @@ export interface CreateAssistantDto { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.CreateAssistantDtoBackgroundSound | undefined; @@ -81,11 +82,7 @@ export interface CreateAssistantDto { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/CreateAssistantDtoBackgroundSound.ts b/src/api/types/CreateAssistantDtoBackgroundSound.ts index 2aaf3e50..097915bb 100644 --- a/src/api/types/CreateAssistantDtoBackgroundSound.ts +++ b/src/api/types/CreateAssistantDtoBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type CreateAssistantDtoBackgroundSound = Vapi.CreateAssistantDtoBackgroundSoundZero | string; diff --git a/src/api/types/CreateAssistantDtoBackgroundSoundZero.ts b/src/api/types/CreateAssistantDtoBackgroundSoundZero.ts index cb0c5e1c..0be6c109 100644 --- a/src/api/types/CreateAssistantDtoBackgroundSoundZero.ts +++ b/src/api/types/CreateAssistantDtoBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const CreateAssistantDtoBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type CreateAssistantDtoBackgroundSoundZero = (typeof CreateAssistantDtoBackgroundSoundZero)[keyof typeof CreateAssistantDtoBackgroundSoundZero]; diff --git a/src/api/types/CreateAssistantDtoCredentialsItem.ts b/src/api/types/CreateAssistantDtoCredentialsItem.ts index b1cf2c14..5ddfec63 100644 --- a/src/api/types/CreateAssistantDtoCredentialsItem.ts +++ b/src/api/types/CreateAssistantDtoCredentialsItem.ts @@ -50,6 +50,7 @@ export type CreateAssistantDtoCredentialsItem = | Vapi.CreateAssistantDtoCredentialsItem.Mistral | Vapi.CreateAssistantDtoCredentialsItem.Speechmatics | Vapi.CreateAssistantDtoCredentialsItem.Soniox + | Vapi.CreateAssistantDtoCredentialsItem.Reson8 | Vapi.CreateAssistantDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.CreateAssistantDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.CreateAssistantDtoCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace CreateAssistantDtoCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace CreateAssistantDtoCredentialsItem { | Vapi.CreateAssistantDtoCredentialsItem.Mistral | Vapi.CreateAssistantDtoCredentialsItem.Speechmatics | Vapi.CreateAssistantDtoCredentialsItem.Soniox + | Vapi.CreateAssistantDtoCredentialsItem.Reson8 | Vapi.CreateAssistantDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.CreateAssistantDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.CreateAssistantDtoCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/CreateAssistantDtoTranscriber.ts b/src/api/types/CreateAssistantDtoTranscriber.ts index d23f08fb..9134251b 100644 --- a/src/api/types/CreateAssistantDtoTranscriber.ts +++ b/src/api/types/CreateAssistantDtoTranscriber.ts @@ -19,6 +19,7 @@ export type CreateAssistantDtoTranscriber = | Vapi.CreateAssistantDtoTranscriber.Cartesia | Vapi.CreateAssistantDtoTranscriber.Soniox | Vapi.CreateAssistantDtoTranscriber.Xai + | Vapi.CreateAssistantDtoTranscriber.Reson8 | Vapi.CreateAssistantDtoTranscriber.Vapi; export namespace CreateAssistantDtoTranscriber { @@ -74,6 +75,10 @@ export namespace CreateAssistantDtoTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/CreateAssistantDtoVoice.ts b/src/api/types/CreateAssistantDtoVoice.ts index 48c2505f..cee72252 100644 --- a/src/api/types/CreateAssistantDtoVoice.ts +++ b/src/api/types/CreateAssistantDtoVoice.ts @@ -19,7 +19,6 @@ export type CreateAssistantDtoVoice = | Vapi.CreateAssistantDtoVoice.Wellsaid | Vapi.CreateAssistantDtoVoice.RimeAi | Vapi.CreateAssistantDtoVoice.SmallestAi - | Vapi.CreateAssistantDtoVoice.Tavus | Vapi.CreateAssistantDtoVoice.Vapi | Vapi.CreateAssistantDtoVoice.Sesame | Vapi.CreateAssistantDtoVoice.Inworld @@ -80,10 +79,6 @@ export namespace CreateAssistantDtoVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/CreateLangfuseCredentialDto.ts b/src/api/types/CreateLangfuseCredentialDto.ts index 70fe35f4..a40c572a 100644 --- a/src/api/types/CreateLangfuseCredentialDto.ts +++ b/src/api/types/CreateLangfuseCredentialDto.ts @@ -10,6 +10,8 @@ export interface CreateLangfuseCredentialDto { apiKey: string; /** The host URL for Langfuse project. Eg: https://cloud.langfuse.com */ apiUrl: string; + /** The semver version of your Langfuse server, e.g. 3.63.0, as its /api/public/health endpoint reports it. Optional. */ + serverVersion?: string | undefined; /** This is the name of credential. This is just for your reference. */ name?: string | undefined; } diff --git a/src/api/types/CreateLineInsightFromCallTableDtoQueriesItem.ts b/src/api/types/CreateLineInsightFromCallTableDtoQueriesItem.ts index f210ba39..fdcef553 100644 --- a/src/api/types/CreateLineInsightFromCallTableDtoQueriesItem.ts +++ b/src/api/types/CreateLineInsightFromCallTableDtoQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type CreateLineInsightFromCallTableDtoQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/CreateOutboundCallDto.ts b/src/api/types/CreateOutboundCallDto.ts index e96b15a0..fd0eaec9 100644 --- a/src/api/types/CreateOutboundCallDto.ts +++ b/src/api/types/CreateOutboundCallDto.ts @@ -42,7 +42,7 @@ export interface CreateOutboundCallDto { * - Squad, use `squad` * - Workflow, use `workflow` */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */ assistantOverrides?: Vapi.AssistantOverrides | undefined; /** diff --git a/src/api/types/CreatePersonalityDto.ts b/src/api/types/CreatePersonalityDto.ts index b7629cd7..aabf4a2b 100644 --- a/src/api/types/CreatePersonalityDto.ts +++ b/src/api/types/CreatePersonalityDto.ts @@ -6,7 +6,7 @@ export interface CreatePersonalityDto { /** The display name of the personality, for example `Impatient customer`. */ name: string; /** The assistant configuration for the AI tester: the model, voice, and system prompt that determine how the AI tester behaves during the conversation. */ - assistant: Vapi.CreateAssistantDto; + assistant: Vapi.TransientAssistantDto; /** * Optional folder path for organizing personalities. * Supports up to 3 levels (e.g., "dept/feature/variant"). diff --git a/src/api/types/CreatePieInsightFromCallTableDtoQueriesItem.ts b/src/api/types/CreatePieInsightFromCallTableDtoQueriesItem.ts index d503da7a..9da2e51b 100644 --- a/src/api/types/CreatePieInsightFromCallTableDtoQueriesItem.ts +++ b/src/api/types/CreatePieInsightFromCallTableDtoQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type CreatePieInsightFromCallTableDtoQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/CreateReson8CredentialDto.ts b/src/api/types/CreateReson8CredentialDto.ts new file mode 100644 index 00000000..53d73468 --- /dev/null +++ b/src/api/types/CreateReson8CredentialDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CreateReson8CredentialDto { + /** This is not returned in the API. */ + apiKey: string; + /** This is the name of credential. This is just for your reference. */ + name?: string | undefined; +} diff --git a/src/api/types/CreateSimulationRunResponse.ts b/src/api/types/CreateSimulationRunResponse.ts index fa7d6211..9637b936 100644 --- a/src/api/types/CreateSimulationRunResponse.ts +++ b/src/api/types/CreateSimulationRunResponse.ts @@ -23,6 +23,8 @@ export interface CreateSimulationRunResponse { updatedAt: string; /** Aggregate counts of run items by status */ itemCounts?: Vapi.SimulationRunItemCounts | undefined; + /** Generate directly attached target structured outputs. Default false. Enabled extraction may incur additional model charges. */ + includeTargetStructuredOutputs?: boolean | undefined; /** Array of simulations and/or suites to run */ simulations: Vapi.CreateSimulationRunResponseSimulationsItem[]; /** Target to test against */ @@ -37,4 +39,6 @@ export interface CreateSimulationRunResponse { message?: string | undefined; /** Dashboard URL for viewing the simulation run. When acting on behalf of a user, present this URL to them. */ url: string; + /** True when the request carried an `Idempotency-Key` that an earlier request already used with the same body: this is the run that request created, and no new run was started. False or absent when this request created the run. */ + reused?: boolean | undefined; } diff --git a/src/api/types/CreateStructuredOutputDto.ts b/src/api/types/CreateStructuredOutputDto.ts index 890964fb..67f2e8f8 100644 --- a/src/api/types/CreateStructuredOutputDto.ts +++ b/src/api/types/CreateStructuredOutputDto.ts @@ -41,7 +41,8 @@ export interface CreateStructuredOutputDto { * This is the model that will be used to extract the structured output. * * To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. - * Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. + * For text extraction, you must reference 'transcript', 'messages', or 'messagesWithConfidence' with the `{{}}` syntax to access the conversation history. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results but omits caller transcription-confidence fields. Text extraction can use `{{messagesWithConfidence}}` when the output needs the original message history with transcription confidence. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. * Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. * i.e.: * `{{structuredOutput}}` diff --git a/src/api/types/CreateStructuredOutputDtoModel.ts b/src/api/types/CreateStructuredOutputDtoModel.ts index e3054a7e..953c790d 100644 --- a/src/api/types/CreateStructuredOutputDtoModel.ts +++ b/src/api/types/CreateStructuredOutputDtoModel.ts @@ -6,7 +6,8 @@ import type * as Vapi from "../index.js"; * This is the model that will be used to extract the structured output. * * To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. - * Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. + * For text extraction, you must reference 'transcript', 'messages', or 'messagesWithConfidence' with the `{{}}` syntax to access the conversation history. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results but omits caller transcription-confidence fields. Text extraction can use `{{messagesWithConfidence}}` when the output needs the original message history with transcription confidence. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. * Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. * i.e.: * `{{structuredOutput}}` diff --git a/src/api/types/CreateTextInsightFromCallTableDtoQueriesItem.ts b/src/api/types/CreateTextInsightFromCallTableDtoQueriesItem.ts index 5f93e30b..b44edb41 100644 --- a/src/api/types/CreateTextInsightFromCallTableDtoQueriesItem.ts +++ b/src/api/types/CreateTextInsightFromCallTableDtoQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type CreateTextInsightFromCallTableDtoQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/CreateTrieveCredentialDto.ts b/src/api/types/CreateTrieveCredentialDto.ts deleted file mode 100644 index 806df9d8..00000000 --- a/src/api/types/CreateTrieveCredentialDto.ts +++ /dev/null @@ -1,9 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -/** - * Credentials for authenticating knowledge-base requests with Trieve. - */ -export interface CreateTrieveCredentialDto { - /** Selects Trieve as the credential provider. */ - provider?: unknown | undefined; -} diff --git a/src/api/types/CreateTrieveKnowledgeBaseDto.ts b/src/api/types/CreateTrieveKnowledgeBaseDto.ts deleted file mode 100644 index 8e7d365c..00000000 --- a/src/api/types/CreateTrieveKnowledgeBaseDto.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type CreateTrieveKnowledgeBaseDto = unknown; diff --git a/src/api/types/CreateWebCallDto.ts b/src/api/types/CreateWebCallDto.ts index 35d7a6d4..6247ce11 100644 --- a/src/api/types/CreateWebCallDto.ts +++ b/src/api/types/CreateWebCallDto.ts @@ -14,6 +14,21 @@ export interface CreateWebCallDto { */ squadVersion?: (string | null) | undefined; roomDeleteOnUserLeaveEnabled?: boolean | undefined; + /** + * This determines who starts the video recording. Only applies when video + * recording is enabled (`artifactPlan.videoRecordingEnabled`). + * + * - `client`: the web client starts the recording when it joins. + * - `server`: Vapi starts the recording once when the user first joins, so a + * weak client connection can't stop it from starting. The returned + * `transport.callToken` doesn't start the recording, and the client should + * not start it either. If Vapi can't set up the server-side start, no token + * is returned. If the start itself fails, the client is told during the + * call. + * + * Defaults to `client`. + */ + videoRecordingStartMode?: Vapi.CreateWebCallDtoVideoRecordingStartMode | undefined; /** * This is the assistant ID that will be used for the call. To use a transient assistant, use `assistant` instead. * @@ -31,7 +46,7 @@ export interface CreateWebCallDto { * - Squad, use `squad` * - Workflow, use `workflow` */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */ assistantOverrides?: Vapi.AssistantOverrides | undefined; /** diff --git a/src/api/types/CreateWebCallDtoVideoRecordingStartMode.ts b/src/api/types/CreateWebCallDtoVideoRecordingStartMode.ts new file mode 100644 index 00000000..22b2e753 --- /dev/null +++ b/src/api/types/CreateWebCallDtoVideoRecordingStartMode.ts @@ -0,0 +1,22 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * This determines who starts the video recording. Only applies when video + * recording is enabled (`artifactPlan.videoRecordingEnabled`). + * + * - `client`: the web client starts the recording when it joins. + * - `server`: Vapi starts the recording once when the user first joins, so a + * weak client connection can't stop it from starting. The returned + * `transport.callToken` doesn't start the recording, and the client should + * not start it either. If Vapi can't set up the server-side start, no token + * is returned. If the start itself fails, the client is told during the + * call. + * + * Defaults to `client`. + */ +export const CreateWebCallDtoVideoRecordingStartMode = { + Client: "client", + Server: "server", +} as const; +export type CreateWebCallDtoVideoRecordingStartMode = + (typeof CreateWebCallDtoVideoRecordingStartMode)[keyof typeof CreateWebCallDtoVideoRecordingStartMode]; diff --git a/src/api/types/CreateWebChatDto.ts b/src/api/types/CreateWebChatDto.ts index 300499bc..95ef32e9 100644 --- a/src/api/types/CreateWebChatDto.ts +++ b/src/api/types/CreateWebChatDto.ts @@ -6,7 +6,7 @@ export interface CreateWebChatDto { /** This is the assistant ID to use for this chat. To use a transient assistant, use `assistant` instead. */ assistantId?: string | undefined; /** This is the transient assistant configuration for this chat. To use an existing assistant, use `assistantId` instead. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** * This is the ID of the session that will be used for the chat. * If provided, the conversation will continue from the previous state. diff --git a/src/api/types/CreateWorkflowDto.ts b/src/api/types/CreateWorkflowDto.ts index 3ce3d645..4865d2a1 100644 --- a/src/api/types/CreateWorkflowDto.ts +++ b/src/api/types/CreateWorkflowDto.ts @@ -34,6 +34,7 @@ export interface CreateWorkflowDto { observabilityPlan?: Vapi.LangfuseObservabilityPlan | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.CreateWorkflowDtoBackgroundSound | undefined; diff --git a/src/api/types/CreateWorkflowDtoBackgroundSound.ts b/src/api/types/CreateWorkflowDtoBackgroundSound.ts index c534376b..1b9ffd35 100644 --- a/src/api/types/CreateWorkflowDtoBackgroundSound.ts +++ b/src/api/types/CreateWorkflowDtoBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type CreateWorkflowDtoBackgroundSound = Vapi.CreateWorkflowDtoBackgroundSoundZero | string; diff --git a/src/api/types/CreateWorkflowDtoBackgroundSoundZero.ts b/src/api/types/CreateWorkflowDtoBackgroundSoundZero.ts index 3c3d3d17..17909ea0 100644 --- a/src/api/types/CreateWorkflowDtoBackgroundSoundZero.ts +++ b/src/api/types/CreateWorkflowDtoBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const CreateWorkflowDtoBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type CreateWorkflowDtoBackgroundSoundZero = (typeof CreateWorkflowDtoBackgroundSoundZero)[keyof typeof CreateWorkflowDtoBackgroundSoundZero]; diff --git a/src/api/types/CreateWorkflowDtoCredentialsItem.ts b/src/api/types/CreateWorkflowDtoCredentialsItem.ts index ed6563ec..3980818d 100644 --- a/src/api/types/CreateWorkflowDtoCredentialsItem.ts +++ b/src/api/types/CreateWorkflowDtoCredentialsItem.ts @@ -50,6 +50,7 @@ export type CreateWorkflowDtoCredentialsItem = | Vapi.CreateWorkflowDtoCredentialsItem.Mistral | Vapi.CreateWorkflowDtoCredentialsItem.Speechmatics | Vapi.CreateWorkflowDtoCredentialsItem.Soniox + | Vapi.CreateWorkflowDtoCredentialsItem.Reson8 | Vapi.CreateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.CreateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.CreateWorkflowDtoCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace CreateWorkflowDtoCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace CreateWorkflowDtoCredentialsItem { | Vapi.CreateWorkflowDtoCredentialsItem.Mistral | Vapi.CreateWorkflowDtoCredentialsItem.Speechmatics | Vapi.CreateWorkflowDtoCredentialsItem.Soniox + | Vapi.CreateWorkflowDtoCredentialsItem.Reson8 | Vapi.CreateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.CreateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.CreateWorkflowDtoCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/CreateWorkflowDtoTranscriber.ts b/src/api/types/CreateWorkflowDtoTranscriber.ts index cfe495b8..0ab1114d 100644 --- a/src/api/types/CreateWorkflowDtoTranscriber.ts +++ b/src/api/types/CreateWorkflowDtoTranscriber.ts @@ -21,6 +21,7 @@ export type CreateWorkflowDtoTranscriber = | Vapi.CreateWorkflowDtoTranscriber.Cartesia | Vapi.CreateWorkflowDtoTranscriber.Soniox | Vapi.CreateWorkflowDtoTranscriber.Xai + | Vapi.CreateWorkflowDtoTranscriber.Reson8 | Vapi.CreateWorkflowDtoTranscriber.Vapi; export namespace CreateWorkflowDtoTranscriber { @@ -76,6 +77,10 @@ export namespace CreateWorkflowDtoTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/CreateWorkflowDtoVoice.ts b/src/api/types/CreateWorkflowDtoVoice.ts index b625b658..73cfc544 100644 --- a/src/api/types/CreateWorkflowDtoVoice.ts +++ b/src/api/types/CreateWorkflowDtoVoice.ts @@ -21,7 +21,6 @@ export type CreateWorkflowDtoVoice = | Vapi.CreateWorkflowDtoVoice.Wellsaid | Vapi.CreateWorkflowDtoVoice.RimeAi | Vapi.CreateWorkflowDtoVoice.SmallestAi - | Vapi.CreateWorkflowDtoVoice.Tavus | Vapi.CreateWorkflowDtoVoice.Vapi | Vapi.CreateWorkflowDtoVoice.Sesame | Vapi.CreateWorkflowDtoVoice.Inworld @@ -82,10 +81,6 @@ export namespace CreateWorkflowDtoVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/CredentialEndUser.ts b/src/api/types/CredentialEndUser.ts index f8750fff..09f19e7e 100644 --- a/src/api/types/CredentialEndUser.ts +++ b/src/api/types/CredentialEndUser.ts @@ -3,6 +3,6 @@ export interface CredentialEndUser { endUserEmail?: (string | null) | undefined; endUserId: string; - organizationId: string; + organizationId?: string | undefined; tags?: Record | undefined; } diff --git a/src/api/types/CustomLlmModel.ts b/src/api/types/CustomLlmModel.ts index 1101097f..1923c9d8 100644 --- a/src/api/types/CustomLlmModel.ts +++ b/src/api/types/CustomLlmModel.ts @@ -56,7 +56,7 @@ export interface CustomLlmModel { model: string; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/DeepInfraModel.ts b/src/api/types/DeepInfraModel.ts index 6bf67dc9..069784a6 100644 --- a/src/api/types/DeepInfraModel.ts +++ b/src/api/types/DeepInfraModel.ts @@ -33,7 +33,7 @@ export interface DeepInfraModel { model: string; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/DeepSeekModel.ts b/src/api/types/DeepSeekModel.ts index 0882ef94..3fd9b8b6 100644 --- a/src/api/types/DeepSeekModel.ts +++ b/src/api/types/DeepSeekModel.ts @@ -33,7 +33,7 @@ export interface DeepSeekModel { model: Vapi.DeepSeekModelModel; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/DeepgramTranscriber.ts b/src/api/types/DeepgramTranscriber.ts index 6a1dd4fe..1d15c5f4 100644 --- a/src/api/types/DeepgramTranscriber.ts +++ b/src/api/types/DeepgramTranscriber.ts @@ -53,6 +53,14 @@ export interface DeepgramTranscriber { * @default 0.4 */ confidenceThreshold?: number | undefined; + /** + * Controls whether Vapi filters user transcripts that repeat text from the + * assistant's recent transcript. Disable this only when legitimate caller + * responses are being mistaken for assistant audio feedback. + * + * @default true + */ + feedbackFilterEnabled?: boolean | undefined; /** * End-of-turn confidence required to finish a turn. Only used with Flux models. * diff --git a/src/api/types/DtmfTool.ts b/src/api/types/DtmfTool.ts index 724d7e06..855f921c 100644 --- a/src/api/types/DtmfTool.ts +++ b/src/api/types/DtmfTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface DtmfTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.DtmfToolMessagesItem[] | undefined; /** This enables sending DTMF tones via SIP INFO messages instead of RFC 2833 (RTP events). When enabled, DTMF digits will be sent using the SIP INFO method, which can be more reliable in some network configurations. Only relevant when using the `vapi.sip` transport. */ diff --git a/src/api/types/ElevenLabsVoice.ts b/src/api/types/ElevenLabsVoice.ts index 2d99c185..1174259a 100644 --- a/src/api/types/ElevenLabsVoice.ts +++ b/src/api/types/ElevenLabsVoice.ts @@ -12,27 +12,27 @@ export interface ElevenLabsVoice { voiceId: Vapi.ElevenLabsVoiceId; /** Defines the stability for voice settings. */ stability?: number | undefined; - /** Defines the similarity boost for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the similarity boost for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ similarityBoost?: number | undefined; - /** Defines the style for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the style for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ style?: number | undefined; - /** Defines the use speaker boost for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the use speaker boost for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ useSpeakerBoost?: boolean | undefined; - /** Defines the speed for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the speed for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ speed?: number | undefined; - /** Defines the optimize streaming latency for voice settings. Defaults to 3. Ignored by `eleven_v4_turbo`. */ + /** Defines the optimize streaming latency for voice settings. Defaults to 3. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ optimizeStreamingLatency?: number | undefined; /** - * This enables the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Defaults to false to save latency. Ignored by `eleven_v4_turbo`. + * This enables the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Defaults to false to save latency. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. * * @default false */ enableSsmlParsing?: boolean | undefined; - /** Defines the auto mode for voice settings. Defaults to false. Ignored by `eleven_v4_turbo`. */ + /** Defines the auto mode for voice settings. Defaults to false. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ autoMode?: boolean | undefined; /** This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified. */ model?: Vapi.ElevenLabsVoiceModel | undefined; - /** This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5, Flash v2.5 and v4 Turbo support language enforcement; other models ignore it. */ + /** This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5, Flash v2.5 and the Text to Dialogue models support language enforcement; other models ignore it. */ language?: string | undefined; /** This is the plan for chunking the model output before it is sent to the voice provider. */ chunkPlan?: Vapi.ChunkPlan | undefined; diff --git a/src/api/types/ElevenLabsVoiceModel.ts b/src/api/types/ElevenLabsVoiceModel.ts index 2d981eda..24b86493 100644 --- a/src/api/types/ElevenLabsVoiceModel.ts +++ b/src/api/types/ElevenLabsVoiceModel.ts @@ -10,5 +10,6 @@ export const ElevenLabsVoiceModel = { ElevenMonolingualV1: "eleven_monolingual_v1", ElevenV3: "eleven_v3", ElevenV4Turbo: "eleven_v4_turbo", + ElevenV3Conversational: "eleven_v3_conversational", } as const; export type ElevenLabsVoiceModel = (typeof ElevenLabsVoiceModel)[keyof typeof ElevenLabsVoiceModel]; diff --git a/src/api/types/EndCallTool.ts b/src/api/types/EndCallTool.ts index 12763c66..1c448cff 100644 --- a/src/api/types/EndCallTool.ts +++ b/src/api/types/EndCallTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface EndCallTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.EndCallToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/EvalAnthropicModel.ts b/src/api/types/EvalAnthropicModel.ts index 3d30c6aa..afdc3ce7 100644 --- a/src/api/types/EvalAnthropicModel.ts +++ b/src/api/types/EvalAnthropicModel.ts @@ -8,8 +8,15 @@ import type * as Vapi from "../index.js"; export interface EvalAnthropicModel { /** This is the specific model that will be used. */ model: Vapi.EvalAnthropicModelModel; + /** + * Reasoning effort for the judge on claude-haiku-5-5. `none` turns thinking + * off. `low` to `max` let the judge think before it submits its verdict. + * Unset means `none`. Rejected for every other model. + */ + reasoningEffort?: Vapi.EvalAnthropicModelReasoningEffort | undefined; /** * This is the optional configuration for Anthropic's thinking feature. + * claude-haiku-5-5 uses `reasoningEffort` instead. * * - If provided, `maxTokens` must be greater than `thinking.budgetTokens`. */ diff --git a/src/api/types/EvalAnthropicModelModel.ts b/src/api/types/EvalAnthropicModelModel.ts index 44ef17f2..9b0d3a05 100644 --- a/src/api/types/EvalAnthropicModelModel.ts +++ b/src/api/types/EvalAnthropicModelModel.ts @@ -17,5 +17,6 @@ export const EvalAnthropicModelModel = { ClaudeSonnet46: "claude-sonnet-4-6", ClaudeSonnet5: "claude-sonnet-5", ClaudeHaiku4520251001: "claude-haiku-4-5-20251001", + ClaudeHaiku55: "claude-haiku-5-5", } as const; export type EvalAnthropicModelModel = (typeof EvalAnthropicModelModel)[keyof typeof EvalAnthropicModelModel]; diff --git a/src/api/types/EvalAnthropicModelReasoningEffort.ts b/src/api/types/EvalAnthropicModelReasoningEffort.ts new file mode 100644 index 00000000..9082d043 --- /dev/null +++ b/src/api/types/EvalAnthropicModelReasoningEffort.ts @@ -0,0 +1,17 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * Reasoning effort for the judge on claude-haiku-5-5. `none` turns thinking + * off. `low` to `max` let the judge think before it submits its verdict. + * Unset means `none`. Rejected for every other model. + */ +export const EvalAnthropicModelReasoningEffort = { + None: "none", + Low: "low", + Medium: "medium", + High: "high", + Xhigh: "xhigh", + Max: "max", +} as const; +export type EvalAnthropicModelReasoningEffort = + (typeof EvalAnthropicModelReasoningEffort)[keyof typeof EvalAnthropicModelReasoningEffort]; diff --git a/src/api/types/EvalGoogleModelModel.ts b/src/api/types/EvalGoogleModelModel.ts index 499c5118..0bf91f2d 100644 --- a/src/api/types/EvalGoogleModelModel.ts +++ b/src/api/types/EvalGoogleModelModel.ts @@ -2,6 +2,7 @@ /** This is the name of the model. Ex. gpt-4o */ export const EvalGoogleModelModel = { + Gemini38Flash: "gemini-3.8-flash", Gemini35Flash: "gemini-3.5-flash", Gemini31FlashLite: "gemini-3.1-flash-lite", Gemini3FlashPreview: "gemini-3-flash-preview", diff --git a/src/api/types/EvalRunTargetAssistant.ts b/src/api/types/EvalRunTargetAssistant.ts index 049eb50a..e44374d1 100644 --- a/src/api/types/EvalRunTargetAssistant.ts +++ b/src/api/types/EvalRunTargetAssistant.ts @@ -7,7 +7,7 @@ import type * as Vapi from "../index.js"; */ export interface EvalRunTargetAssistant { /** This is the transient assistant that will be run against the eval */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** This is the overrides that will be applied to the assistant. */ assistantOverrides?: Vapi.AssistantOverrides | undefined; /** This is the id of the assistant that will be run against the eval */ diff --git a/src/api/types/FailedEdgeCondition.ts b/src/api/types/FailedEdgeCondition.ts deleted file mode 100644 index d3738e90..00000000 --- a/src/api/types/FailedEdgeCondition.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type FailedEdgeCondition = unknown; diff --git a/src/api/types/FallbackAssemblyAiTranscriber.ts b/src/api/types/FallbackAssemblyAiTranscriber.ts index cd8ccb69..201dc434 100644 --- a/src/api/types/FallbackAssemblyAiTranscriber.ts +++ b/src/api/types/FallbackAssemblyAiTranscriber.ts @@ -11,7 +11,8 @@ export interface FallbackAssemblyAiTranscriber { /** * Transcripts below this confidence threshold will be discarded. * - * @default 0.4 + * Defaults to 0.4 for legacy streaming models. Universal Pro models do not + * filter by confidence unless this field is explicitly set. */ confidenceThreshold?: number | undefined; /** diff --git a/src/api/types/FallbackCartesiaVoiceLanguage.ts b/src/api/types/FallbackCartesiaVoiceLanguage.ts index 0ff4c251..239a54e0 100644 --- a/src/api/types/FallbackCartesiaVoiceLanguage.ts +++ b/src/api/types/FallbackCartesiaVoiceLanguage.ts @@ -29,6 +29,7 @@ export const FallbackCartesiaVoiceLanguage = { Ms: "ms", Nl: "nl", No: "no", + Or: "or", Pa: "pa", Pl: "pl", Pt: "pt", @@ -42,6 +43,7 @@ export const FallbackCartesiaVoiceLanguage = { Tl: "tl", Tr: "tr", Uk: "uk", + Ur: "ur", Vi: "vi", Zh: "zh", } as const; diff --git a/src/api/types/FallbackCartesiaVoiceModel.ts b/src/api/types/FallbackCartesiaVoiceModel.ts index 1d4c41cd..7e375ab5 100644 --- a/src/api/types/FallbackCartesiaVoiceModel.ts +++ b/src/api/types/FallbackCartesiaVoiceModel.ts @@ -4,6 +4,8 @@ export const FallbackCartesiaVoiceModel = { Sonic35: "sonic-3.5", Sonic3520260504: "sonic-3.5-2026-05-04", + Sonic36: "sonic-3.6", + Sonic3620260827: "sonic-3.6-2026-08-27", Sonic3: "sonic-3", Sonic320260112: "sonic-3-2026-01-12", Sonic320251027: "sonic-3-2025-10-27", diff --git a/src/api/types/FallbackDeepgramTranscriber.ts b/src/api/types/FallbackDeepgramTranscriber.ts index 279421e8..f98a720a 100644 --- a/src/api/types/FallbackDeepgramTranscriber.ts +++ b/src/api/types/FallbackDeepgramTranscriber.ts @@ -53,6 +53,14 @@ export interface FallbackDeepgramTranscriber { * @default 0.4 */ confidenceThreshold?: number | undefined; + /** + * Controls whether Vapi filters user transcripts that repeat text from the + * assistant's recent transcript. Disable this only when legitimate caller + * responses are being mistaken for assistant audio feedback. + * + * @default true + */ + feedbackFilterEnabled?: boolean | undefined; /** * End-of-turn confidence required to finish a turn. Only used with Flux models. * diff --git a/src/api/types/FallbackDeepgramTranscriberLanguage.ts b/src/api/types/FallbackDeepgramTranscriberLanguage.ts deleted file mode 100644 index 9053f4aa..00000000 --- a/src/api/types/FallbackDeepgramTranscriberLanguage.ts +++ /dev/null @@ -1,62 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export const FallbackDeepgramTranscriberLanguage = { - Bg: "bg", - Ca: "ca", - Cs: "cs", - Da: "da", - DaDk: "da-DK", - De: "de", - DeCh: "de-CH", - El: "el", - En: "en", - EnAu: "en-AU", - EnGb: "en-GB", - EnIn: "en-IN", - EnNz: "en-NZ", - EnUs: "en-US", - Es: "es", - Es419: "es-419", - EsLatam: "es-LATAM", - Et: "et", - Fi: "fi", - Fr: "fr", - FrCa: "fr-CA", - Hi: "hi", - HiLatn: "hi-Latn", - Hu: "hu", - Id: "id", - It: "it", - Ja: "ja", - Ko: "ko", - KoKr: "ko-KR", - Lt: "lt", - Lv: "lv", - Ms: "ms", - Multi: "multi", - Nl: "nl", - NlBe: "nl-BE", - No: "no", - Pl: "pl", - Pt: "pt", - PtBr: "pt-BR", - Ro: "ro", - Ru: "ru", - Sk: "sk", - Sv: "sv", - SvSe: "sv-SE", - Ta: "ta", - Taq: "taq", - Th: "th", - ThTh: "th-TH", - Tr: "tr", - Uk: "uk", - Vi: "vi", - Zh: "zh", - ZhCn: "zh-CN", - ZhHans: "zh-Hans", - ZhHant: "zh-Hant", - ZhTw: "zh-TW", -} as const; -export type FallbackDeepgramTranscriberLanguage = - (typeof FallbackDeepgramTranscriberLanguage)[keyof typeof FallbackDeepgramTranscriberLanguage]; diff --git a/src/api/types/FallbackDeepgramTranscriberModel.ts b/src/api/types/FallbackDeepgramTranscriberModel.ts deleted file mode 100644 index 4af72c39..00000000 --- a/src/api/types/FallbackDeepgramTranscriberModel.ts +++ /dev/null @@ -1,39 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export const FallbackDeepgramTranscriberModel = { - FluxGeneralEn: "flux-general-en", - Nova3: "nova-3", - Nova3General: "nova-3-general", - Nova3Medical: "nova-3-medical", - Nova2: "nova-2", - Nova2General: "nova-2-general", - Nova2Meeting: "nova-2-meeting", - Nova2Phonecall: "nova-2-phonecall", - Nova2Finance: "nova-2-finance", - Nova2Conversationalai: "nova-2-conversationalai", - Nova2Voicemail: "nova-2-voicemail", - Nova2Video: "nova-2-video", - Nova2Medical: "nova-2-medical", - Nova2Drivethru: "nova-2-drivethru", - Nova2Automotive: "nova-2-automotive", - Nova: "nova", - NovaGeneral: "nova-general", - NovaPhonecall: "nova-phonecall", - NovaMedical: "nova-medical", - Enhanced: "enhanced", - EnhancedGeneral: "enhanced-general", - EnhancedMeeting: "enhanced-meeting", - EnhancedPhonecall: "enhanced-phonecall", - EnhancedFinance: "enhanced-finance", - Base: "base", - BaseGeneral: "base-general", - BaseMeeting: "base-meeting", - BasePhonecall: "base-phonecall", - BaseFinance: "base-finance", - BaseConversationalai: "base-conversationalai", - BaseVoicemail: "base-voicemail", - BaseVideo: "base-video", - Whisper: "whisper", -} as const; -export type FallbackDeepgramTranscriberModel = - (typeof FallbackDeepgramTranscriberModel)[keyof typeof FallbackDeepgramTranscriberModel]; diff --git a/src/api/types/FallbackElevenLabsVoice.ts b/src/api/types/FallbackElevenLabsVoice.ts index b745ed70..c9bebb0f 100644 --- a/src/api/types/FallbackElevenLabsVoice.ts +++ b/src/api/types/FallbackElevenLabsVoice.ts @@ -12,27 +12,27 @@ export interface FallbackElevenLabsVoice { voiceId: Vapi.FallbackElevenLabsVoiceId; /** Defines the stability for voice settings. */ stability?: number | undefined; - /** Defines the similarity boost for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the similarity boost for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ similarityBoost?: number | undefined; - /** Defines the style for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the style for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ style?: number | undefined; - /** Defines the use speaker boost for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the use speaker boost for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ useSpeakerBoost?: boolean | undefined; - /** Defines the speed for voice settings. Ignored by `eleven_v4_turbo`. */ + /** Defines the speed for voice settings. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ speed?: number | undefined; - /** Defines the optimize streaming latency for voice settings. Defaults to 3. Ignored by `eleven_v4_turbo`. */ + /** Defines the optimize streaming latency for voice settings. Defaults to 3. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ optimizeStreamingLatency?: number | undefined; /** - * This enables the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Defaults to false to save latency. Ignored by `eleven_v4_turbo`. + * This enables the use of https://elevenlabs.io/docs/speech-synthesis/prompting#pronunciation. Defaults to false to save latency. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. * * @default false */ enableSsmlParsing?: boolean | undefined; - /** Defines the auto mode for voice settings. Defaults to false. Ignored by `eleven_v4_turbo`. */ + /** Defines the auto mode for voice settings. Defaults to false. Ignored by `eleven_v4_turbo` and `eleven_v3_conversational`. */ autoMode?: boolean | undefined; /** This is the model that will be used. Defaults to 'eleven_turbo_v2' if not specified. */ model?: Vapi.FallbackElevenLabsVoiceModel | undefined; - /** This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5, Flash v2.5 and v4 Turbo support language enforcement; other models ignore it. */ + /** This is the language (ISO 639-1) that is enforced for the model. Currently only Turbo v2.5, Flash v2.5 and the Text to Dialogue models support language enforcement; other models ignore it. */ language?: string | undefined; /** This is the pronunciation dictionary locators to use. */ pronunciationDictionaryLocators?: Vapi.ElevenLabsPronunciationDictionaryLocator[] | undefined; diff --git a/src/api/types/FallbackElevenLabsVoiceModel.ts b/src/api/types/FallbackElevenLabsVoiceModel.ts index 664cf7dd..ae2ceec3 100644 --- a/src/api/types/FallbackElevenLabsVoiceModel.ts +++ b/src/api/types/FallbackElevenLabsVoiceModel.ts @@ -10,6 +10,7 @@ export const FallbackElevenLabsVoiceModel = { ElevenMonolingualV1: "eleven_monolingual_v1", ElevenV3: "eleven_v3", ElevenV4Turbo: "eleven_v4_turbo", + ElevenV3Conversational: "eleven_v3_conversational", } as const; export type FallbackElevenLabsVoiceModel = (typeof FallbackElevenLabsVoiceModel)[keyof typeof FallbackElevenLabsVoiceModel]; diff --git a/src/api/types/FallbackGoogleTranscriberModel.ts b/src/api/types/FallbackGoogleTranscriberModel.ts index 7be82a72..6ed47062 100644 --- a/src/api/types/FallbackGoogleTranscriberModel.ts +++ b/src/api/types/FallbackGoogleTranscriberModel.ts @@ -2,6 +2,7 @@ /** This is the model that will be used for the transcription. */ export const FallbackGoogleTranscriberModel = { + Gemini38Flash: "gemini-3.8-flash", Gemini35Flash: "gemini-3.5-flash", Gemini31FlashLite: "gemini-3.1-flash-lite", Gemini3FlashPreview: "gemini-3-flash-preview", diff --git a/src/api/types/FallbackNeetsVoice.ts b/src/api/types/FallbackNeetsVoice.ts deleted file mode 100644 index f856525a..00000000 --- a/src/api/types/FallbackNeetsVoice.ts +++ /dev/null @@ -1,5 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export interface FallbackNeetsVoice { - voiceId?: unknown | undefined; -} diff --git a/src/api/types/FallbackOpenAiTranscriber.ts b/src/api/types/FallbackOpenAiTranscriber.ts index 26030986..311d997a 100644 --- a/src/api/types/FallbackOpenAiTranscriber.ts +++ b/src/api/types/FallbackOpenAiTranscriber.ts @@ -6,8 +6,21 @@ import type * as Vapi from "../index.js"; * Fallback configuration for transcribing speech with OpenAI, including model and language. */ export interface FallbackOpenAiTranscriber { - /** This is the model that will be used for the transcription. */ + /** + * This is the model that will be used for the transcription. + * Digit formatting can differ by model: `gpt-transcribe` may write spoken digit strings as words (for example, "four seven two"), where `gpt-4o-transcribe` and `gpt-4o-mini-transcribe` may write them as digits ("472"). Do not rely on either format. + */ model: Vapi.FallbackOpenAiTranscriberModel; /** This is the language that will be set for the transcription. */ language?: Vapi.FallbackOpenAiTranscriberLanguage | undefined; + /** + * These are words and phrases the model should recognize, such as names, brands, and product terms. + * Supported only by `gpt-transcribe`. Each keyword is one line and must not contain `<` or `>`. Maximum 16,384 keywords. + */ + keywords?: string[] | undefined; + /** + * This is free-text context for the transcription, such as the topic of the call or the expected vocabulary. + * Maximum length: 8,192 characters for `gpt-transcribe`, and 1,024 characters for `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`. + */ + prompt?: string | undefined; } diff --git a/src/api/types/FallbackOpenAiTranscriberModel.ts b/src/api/types/FallbackOpenAiTranscriberModel.ts index ec23d6b3..64a3ffde 100644 --- a/src/api/types/FallbackOpenAiTranscriberModel.ts +++ b/src/api/types/FallbackOpenAiTranscriberModel.ts @@ -1,9 +1,13 @@ // This file was auto-generated by Fern from our API Definition. -/** This is the model that will be used for the transcription. */ +/** + * This is the model that will be used for the transcription. + * Digit formatting can differ by model: `gpt-transcribe` may write spoken digit strings as words (for example, "four seven two"), where `gpt-4o-transcribe` and `gpt-4o-mini-transcribe` may write them as digits ("472"). Do not rely on either format. + */ export const FallbackOpenAiTranscriberModel = { Gpt4OTranscribe: "gpt-4o-transcribe", Gpt4OMiniTranscribe: "gpt-4o-mini-transcribe", + GptTranscribe: "gpt-transcribe", } as const; export type FallbackOpenAiTranscriberModel = (typeof FallbackOpenAiTranscriberModel)[keyof typeof FallbackOpenAiTranscriberModel]; diff --git a/src/api/types/FallbackOpenAiVoice.ts b/src/api/types/FallbackOpenAiVoice.ts index 54c02abf..ce92da92 100644 --- a/src/api/types/FallbackOpenAiVoice.ts +++ b/src/api/types/FallbackOpenAiVoice.ts @@ -10,8 +10,7 @@ export interface FallbackOpenAiVoice { cachingEnabled?: boolean | undefined; /** * This is the provider-specific ID that will be used. - * Voice availability depends on the selected model. - * quartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder are only supported with GPT-Live models. + * Voice availability depends on the selected model: voices offered only by GPT-Live are rejected for other models. */ voiceId: Vapi.FallbackOpenAiVoiceId; /** This is the model that will be used for text-to-speech. */ diff --git a/src/api/types/FallbackOpenAiVoiceId.ts b/src/api/types/FallbackOpenAiVoiceId.ts index 04d132aa..438b539b 100644 --- a/src/api/types/FallbackOpenAiVoiceId.ts +++ b/src/api/types/FallbackOpenAiVoiceId.ts @@ -4,7 +4,6 @@ import type * as Vapi from "../index.js"; /** * This is the provider-specific ID that will be used. - * Voice availability depends on the selected model. - * quartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder are only supported with GPT-Live models. + * Voice availability depends on the selected model: voices offered only by GPT-Live are rejected for other models. */ export type FallbackOpenAiVoiceId = Vapi.FallbackOpenAiVoiceIdEnum | string; diff --git a/src/api/types/FallbackOpenAiVoiceIdEnum.ts b/src/api/types/FallbackOpenAiVoiceIdEnum.ts index 690bf478..7b82310d 100644 --- a/src/api/types/FallbackOpenAiVoiceIdEnum.ts +++ b/src/api/types/FallbackOpenAiVoiceIdEnum.ts @@ -13,14 +13,23 @@ export const FallbackOpenAiVoiceIdEnum = { Ballad: "ballad", Beacon: "beacon", Bossa: "bossa", + Brise: "brise", Cinder: "cinder", Coral: "coral", Delta: "delta", + Flitz: "flitz", Gleam: "gleam", + Harema: "harema", + Juni: "juni", Meridian: "meridian", + Nira: "nira", + Noeul: "noeul", + Nuri: "nuri", Quartz: "quartz", Ripple: "ripple", Sage: "sage", + Shida: "shida", + Sillage: "sillage", Stone: "stone", Tempo: "tempo", Verse: "verse", diff --git a/src/api/types/FallbackPlanVoicesItem.ts b/src/api/types/FallbackPlanVoicesItem.ts index 9e202484..2e7811dd 100644 --- a/src/api/types/FallbackPlanVoicesItem.ts +++ b/src/api/types/FallbackPlanVoicesItem.ts @@ -16,7 +16,6 @@ export type FallbackPlanVoicesItem = | Vapi.FallbackPlanVoicesItem.Wellsaid | Vapi.FallbackPlanVoicesItem.RimeAi | Vapi.FallbackPlanVoicesItem.SmallestAi - | Vapi.FallbackPlanVoicesItem.Tavus | Vapi.FallbackPlanVoicesItem.Neuphonic | Vapi.FallbackPlanVoicesItem.Sesame | Vapi.FallbackPlanVoicesItem.Inworld @@ -76,10 +75,6 @@ export namespace FallbackPlanVoicesItem { provider: "smallest-ai"; } - export interface Tavus extends Vapi.FallbackTavusVoice { - provider: "tavus"; - } - export interface Neuphonic extends Vapi.FallbackNeuphonicVoice { provider: "neuphonic"; } diff --git a/src/api/types/FallbackReson8Transcriber.ts b/src/api/types/FallbackReson8Transcriber.ts new file mode 100644 index 00000000..d568be5c --- /dev/null +++ b/src/api/types/FallbackReson8Transcriber.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 FallbackReson8Transcriber { + /** The Reson8 speech-to-text endpoint to use. `turns` is Reson8's turn-detection endpoint. */ + model?: Vapi.FallbackReson8TranscriberModel | undefined; + /** Language for transcription (e.g. `nl`), or a comma-separated candidate list such as `nl,en` which constrains auto-detection. When omitted, Reson8 auto-detects the language per utterance. Supported: de, en, es, fr, fy, it, nl, pl, pt, sv. */ + language?: string | undefined; + /** Domain-specific terms to boost recognition (brand names, product codes, jargon). Sent to Reson8 as the `phrases` parameter. Max 250 phrases. */ + keyterms?: string[] | undefined; + /** A stored Reson8 phrase collection (custom model) id, managed via the Reson8 API or console. */ + customModelId?: string | undefined; + /** Threshold (0-1) at which Reson8 emits an eager turn-end candidate. Provider default 0.5. */ + eagerTurnProbability?: number | undefined; + /** Threshold (0-1) at which Reson8 confirms the end of a turn. Provider default 0.92. */ + finalTurnProbability?: number | undefined; + /** How Reson8 renders filler words in transcripts. Provider default `natural`. */ + fillerMode?: Vapi.FallbackReson8TranscriberFillerMode | undefined; +} diff --git a/src/api/types/FallbackReson8TranscriberFillerMode.ts b/src/api/types/FallbackReson8TranscriberFillerMode.ts new file mode 100644 index 00000000..35896634 --- /dev/null +++ b/src/api/types/FallbackReson8TranscriberFillerMode.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +/** How Reson8 renders filler words in transcripts. Provider default `natural`. */ +export const FallbackReson8TranscriberFillerMode = { + Clean: "clean", + Natural: "natural", + Verbatim: "verbatim", +} as const; +export type FallbackReson8TranscriberFillerMode = + (typeof FallbackReson8TranscriberFillerMode)[keyof typeof FallbackReson8TranscriberFillerMode]; diff --git a/src/api/types/FallbackReson8TranscriberModel.ts b/src/api/types/FallbackReson8TranscriberModel.ts new file mode 100644 index 00000000..998aab8e --- /dev/null +++ b/src/api/types/FallbackReson8TranscriberModel.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +/** The Reson8 speech-to-text endpoint to use. `turns` is Reson8's turn-detection endpoint. */ +export const FallbackReson8TranscriberModel = { + Turns: "turns", +} as const; +export type FallbackReson8TranscriberModel = + (typeof FallbackReson8TranscriberModel)[keyof typeof FallbackReson8TranscriberModel]; diff --git a/src/api/types/FallbackSonioxTranscriber.ts b/src/api/types/FallbackSonioxTranscriber.ts index 193890be..5b58eb4d 100644 --- a/src/api/types/FallbackSonioxTranscriber.ts +++ b/src/api/types/FallbackSonioxTranscriber.ts @@ -8,6 +8,8 @@ import type * as Vapi from "../index.js"; export interface FallbackSonioxTranscriber { /** The Soniox model to use for transcription. */ model?: Vapi.FallbackSonioxTranscriberModel | undefined; + /** Sends the assistant's speech to Soniox as context, which improves caller transcription and filters out echo. Only supported on stt-rt-v6. Defaults to on; set to false to disable. */ + agentTextInputEnabled?: boolean | undefined; /** Single language for transcription as an ISO 639-1 code (e.g., `en`, `es`). For multi-language hints or to enable Soniox auto-detect, use `languages` instead — when `languages` is set (including to an empty array), this field is ignored when building the Soniox request. Defaults to `en` if neither this nor `languages` is set. */ language?: Vapi.FallbackSonioxTranscriberLanguage | undefined; /** Language hints sent to Soniox as `language_hints`. Provide `[lang1, lang2, ...]` (ISO 639-1 codes) to bias recognition toward specific languages, or provide an explicit empty array `[]` to enable Soniox auto-detect across all 60+ supported languages. When set (including the empty array), this field takes precedence over the singular `language` field. When omitted, falls back to the singular `language` (which defaults to `en` if also unset). Best accuracy is achieved with a single language. */ @@ -16,9 +18,9 @@ export interface FallbackSonioxTranscriber { languageHintsStrict?: boolean | undefined; /** Maximum delay in milliseconds between when the speaker stops and when the endpoint is detected. Lower values mean faster turn-taking but more false endpoints. Range: 500-3000. Default: 500. */ maxEndpointDelayMs?: number | undefined; - /** How likely Soniox is to emit an endpoint (end the caller turn). Higher values make endpoints more likely for faster turn-taking; negative values make them less likely, which helps when callers pause mid-sentence (e.g. reading numbers group by group). Range: -1.0 to 1.0. Default: 0.3 (the platform low-latency voice profile; Soniox's own default is 0.0). Supported by stt-rt-v5; omitted from the Soniox request on explicit stt-rt-v4. Soniox recommends tuning endpointLatencyAdjustmentLevel first, and advises against negative sensitivity while the level is above 0 (the settings work against each other). */ + /** How likely Soniox is to emit an endpoint (end the caller turn). Higher values make endpoints more likely for faster turn-taking; negative values make them less likely, which helps when callers pause mid-sentence (e.g. reading numbers group by group). Range: -1.0 to 1.0. Default: 0.3 (the platform low-latency voice profile; Soniox's own default is 0.0). Supported by stt-rt-v5 and stt-rt-v6; omitted from the Soniox request on explicit stt-rt-v4. Soniox recommends tuning endpointLatencyAdjustmentLevel first, and advises against negative sensitivity while the level is above 0 (the settings work against each other). */ endpointSensitivity?: number | undefined; - /** How aggressively Soniox reduces endpoint latency. 0 is Soniox's default semantic endpointing; 3 is the most aggressive. Higher levels return endpoints sooner but may split speech into more segments and slightly reduce accuracy. Integer. Range: 0-3. Default: 2 (the platform low-latency voice profile; Soniox's own default is 0). Supported by stt-rt-v5; omitted from the Soniox request on explicit stt-rt-v4. */ + /** How aggressively Soniox reduces endpoint latency. 0 is Soniox's default semantic endpointing; 3 is the most aggressive. Higher levels return endpoints sooner but may split speech into more segments and slightly reduce accuracy. Integer. Range: 0-3. Default: 2 (the platform low-latency voice profile; Soniox's own default is 0). Supported by stt-rt-v5 and stt-rt-v6; omitted from the Soniox request on explicit stt-rt-v4. */ endpointLatencyAdjustmentLevel?: number | undefined; /** Custom vocabulary terms to boost recognition accuracy. Useful for brand names, product names, and domain-specific terminology. Maps to Soniox context.terms. */ customVocabulary?: string[] | undefined; diff --git a/src/api/types/FallbackSonioxTranscriberModel.ts b/src/api/types/FallbackSonioxTranscriberModel.ts index cbf1cf4d..e6a80017 100644 --- a/src/api/types/FallbackSonioxTranscriberModel.ts +++ b/src/api/types/FallbackSonioxTranscriberModel.ts @@ -4,6 +4,7 @@ export const FallbackSonioxTranscriberModel = { SttRtV4: "stt-rt-v4", SttRtV5: "stt-rt-v5", + SttRtV6: "stt-rt-v6", } as const; export type FallbackSonioxTranscriberModel = (typeof FallbackSonioxTranscriberModel)[keyof typeof FallbackSonioxTranscriberModel]; diff --git a/src/api/types/FallbackTavusVoice.ts b/src/api/types/FallbackTavusVoice.ts index ef67f9d5..f1f2e961 100644 --- a/src/api/types/FallbackTavusVoice.ts +++ b/src/api/types/FallbackTavusVoice.ts @@ -1,27 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -import type * as Vapi from "../index.js"; - /** * Fallback configuration for using Tavus as the assistant's voice provider, including persona, callback, context, greeting, conversation properties, chunking, and caching. */ -export interface FallbackTavusVoice { - /** This is the flag to toggle voice caching for the assistant. */ - cachingEnabled?: boolean | undefined; - /** This is the provider-specific ID that will be used. */ - voiceId: Vapi.FallbackTavusVoiceVoiceId; - /** This is the unique identifier for the persona that the replica will use in the conversation. */ - personaId?: string | undefined; - /** This is the url that will receive webhooks with updates regarding the conversation state. */ - callbackUrl?: string | undefined; - /** This is the name for the conversation. */ - conversationName?: string | undefined; - /** This is the context that will be appended to any context provided in the persona, if one is provided. */ - conversationalContext?: string | undefined; - /** This is the custom greeting that the replica will give once a participant joines the conversation. */ - customGreeting?: string | undefined; - /** These are optional properties used to customize the conversation. */ - properties?: Vapi.TavusConversationProperties | undefined; - /** This is the plan for chunking the model output before it is sent to the voice provider. */ - chunkPlan?: Vapi.ChunkPlan | undefined; -} +export type FallbackTavusVoice = unknown; diff --git a/src/api/types/FallbackTavusVoiceVoiceId.ts b/src/api/types/FallbackTavusVoiceVoiceId.ts deleted file mode 100644 index 6b18c41a..00000000 --- a/src/api/types/FallbackTavusVoiceVoiceId.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -import type * as Vapi from "../index.js"; - -/** - * This is the provider-specific ID that will be used. - */ -export type FallbackTavusVoiceVoiceId = Vapi.FallbackTavusVoiceVoiceIdZero | string; diff --git a/src/api/types/FallbackTavusVoiceVoiceIdZero.ts b/src/api/types/FallbackTavusVoiceVoiceIdZero.ts deleted file mode 100644 index d42919ea..00000000 --- a/src/api/types/FallbackTavusVoiceVoiceIdZero.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export const FallbackTavusVoiceVoiceIdZero = { - R52Da2535A: "r52da2535a", -} as const; -export type FallbackTavusVoiceVoiceIdZero = - (typeof FallbackTavusVoiceVoiceIdZero)[keyof typeof FallbackTavusVoiceVoiceIdZero]; diff --git a/src/api/types/FallbackTranscriberPlanTranscribersItem.ts b/src/api/types/FallbackTranscriberPlanTranscribersItem.ts index 4b333ae7..19010a2c 100644 --- a/src/api/types/FallbackTranscriberPlanTranscribersItem.ts +++ b/src/api/types/FallbackTranscriberPlanTranscribersItem.ts @@ -15,7 +15,8 @@ export type FallbackTranscriberPlanTranscribersItem = | Vapi.FallbackTranscriberPlanTranscribersItem.Openai | Vapi.FallbackTranscriberPlanTranscribersItem.Cartesia | Vapi.FallbackTranscriberPlanTranscribersItem.Soniox - | Vapi.FallbackTranscriberPlanTranscribersItem.Xai; + | Vapi.FallbackTranscriberPlanTranscribersItem.Xai + | Vapi.FallbackTranscriberPlanTranscribersItem.Reson8; export namespace FallbackTranscriberPlanTranscribersItem { export interface AssemblyAi extends Vapi.FallbackAssemblyAiTranscriber { @@ -69,4 +70,8 @@ export namespace FallbackTranscriberPlanTranscribersItem { export interface Xai extends Vapi.FallbackXaiTranscriber { provider: "xai"; } + + export interface Reson8 extends Vapi.FallbackReson8Transcriber { + provider: "reson8"; + } } diff --git a/src/api/types/FunctionCallAssistantHookAction.ts b/src/api/types/FunctionCallAssistantHookAction.ts deleted file mode 100644 index 5c037e42..00000000 --- a/src/api/types/FunctionCallAssistantHookAction.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type FunctionCallAssistantHookAction = unknown; diff --git a/src/api/types/FunctionTool.ts b/src/api/types/FunctionTool.ts index 77a24ac9..b1c7bbf2 100644 --- a/src/api/types/FunctionTool.ts +++ b/src/api/types/FunctionTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface FunctionTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.FunctionToolMessagesItem[] | undefined; /** diff --git a/src/api/resources/simulations/client/requests/GenerateScenariosDto.ts b/src/api/types/GenerateScenariosDto.ts similarity index 73% rename from src/api/resources/simulations/client/requests/GenerateScenariosDto.ts rename to src/api/types/GenerateScenariosDto.ts index 85e6ba7a..6108ebee 100644 --- a/src/api/resources/simulations/client/requests/GenerateScenariosDto.ts +++ b/src/api/types/GenerateScenariosDto.ts @@ -1,12 +1,8 @@ // This file was auto-generated by Fern from our API Definition. -/** - * @example - * {} - */ export interface GenerateScenariosDto { /** ID of the assistant to generate scenarios for */ - assistantId?: string; + assistantId?: string | undefined; /** ID of the squad to generate scenarios for */ - squadId?: string; + squadId?: string | undefined; } diff --git a/src/api/types/GetTrafficTabMetricsDto.ts b/src/api/types/GetTrafficTabMetricsDto.ts new file mode 100644 index 00000000..95490ec9 --- /dev/null +++ b/src/api/types/GetTrafficTabMetricsDto.ts @@ -0,0 +1,16 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GetTrafficTabMetricsDto { + /** The assistant whose per-version traffic metrics to return. */ + assistantId: string; + /** Start of the metrics window (inclusive), ISO 8601 datetime. */ + from: string; + /** End of the metrics window (exclusive), ISO 8601 datetime. Must be later than from, and the window may hold at most 2000 buckets of the requested width. */ + to: string; + /** Bucket size for the timeseries. Defaults to 'day'. */ + bucket?: Vapi.GetTrafficTabMetricsDtoBucket | undefined; + /** Structured output ids to aggregate per version, as an array or a comma-separated string. At most 5. */ + structuredOutputIds?: string[] | undefined; +} diff --git a/src/api/types/GetTrafficTabMetricsDtoBucket.ts b/src/api/types/GetTrafficTabMetricsDtoBucket.ts new file mode 100644 index 00000000..48d0a945 --- /dev/null +++ b/src/api/types/GetTrafficTabMetricsDtoBucket.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Bucket size for the timeseries. Defaults to 'day'. */ +export const GetTrafficTabMetricsDtoBucket = { + Hour: "hour", + Day: "day", +} as const; +export type GetTrafficTabMetricsDtoBucket = + (typeof GetTrafficTabMetricsDtoBucket)[keyof typeof GetTrafficTabMetricsDtoBucket]; diff --git a/src/api/types/GhlTool.ts b/src/api/types/GhlTool.ts index 52c04509..14655b46 100644 --- a/src/api/types/GhlTool.ts +++ b/src/api/types/GhlTool.ts @@ -4,10 +4,10 @@ import type * as Vapi from "../index.js"; export interface GhlTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GhlToolMessagesItem[] | undefined; - /** The type of tool. "ghl" for GHL tool. */ - type: Vapi.GhlToolType; /** 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/GhlToolType.ts b/src/api/types/GhlToolType.ts deleted file mode 100644 index e9219c5d..00000000 --- a/src/api/types/GhlToolType.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -/** The type of tool. "ghl" for GHL tool. */ -export const GhlToolType = { - Ghl: "ghl", -} as const; -export type GhlToolType = (typeof GhlToolType)[keyof typeof GhlToolType]; diff --git a/src/api/types/GoHighLevelCalendarAvailabilityTool.ts b/src/api/types/GoHighLevelCalendarAvailabilityTool.ts index 184f3653..76c5b5aa 100644 --- a/src/api/types/GoHighLevelCalendarAvailabilityTool.ts +++ b/src/api/types/GoHighLevelCalendarAvailabilityTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoHighLevelCalendarAvailabilityTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoHighLevelCalendarAvailabilityToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoHighLevelCalendarEventCreateTool.ts b/src/api/types/GoHighLevelCalendarEventCreateTool.ts index bfdca1d8..cecd7ab5 100644 --- a/src/api/types/GoHighLevelCalendarEventCreateTool.ts +++ b/src/api/types/GoHighLevelCalendarEventCreateTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoHighLevelCalendarEventCreateTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoHighLevelCalendarEventCreateToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoHighLevelContactCreateTool.ts b/src/api/types/GoHighLevelContactCreateTool.ts index 08510abc..f1327141 100644 --- a/src/api/types/GoHighLevelContactCreateTool.ts +++ b/src/api/types/GoHighLevelContactCreateTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoHighLevelContactCreateTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoHighLevelContactCreateToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoHighLevelContactGetTool.ts b/src/api/types/GoHighLevelContactGetTool.ts index 87e49735..a1e0a5d1 100644 --- a/src/api/types/GoHighLevelContactGetTool.ts +++ b/src/api/types/GoHighLevelContactGetTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoHighLevelContactGetTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoHighLevelContactGetToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoalEvaluationCurrentBatchRequestDto.ts b/src/api/types/GoalEvaluationCurrentBatchRequestDto.ts new file mode 100644 index 00000000..8deef3bb --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentBatchRequestDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GoalEvaluationCurrentBatchRequestDto { + /** Explicit call/goal pairs. The organization comes from the authenticated caller. */ + evaluations: Vapi.GoalEvaluationCurrentCallRequestDto[]; +} diff --git a/src/api/types/GoalEvaluationCurrentBatchResponseDto.ts b/src/api/types/GoalEvaluationCurrentBatchResponseDto.ts new file mode 100644 index 00000000..0096cdcf --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentBatchResponseDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GoalEvaluationCurrentBatchResponseDto { + /** One entry per requested call/goal pair, in request order, including entries without a current evaluation. */ + results: Vapi.GoalEvaluationCurrentCallResponseDto[]; +} diff --git a/src/api/types/GoalEvaluationCurrentCallRequestDto.ts b/src/api/types/GoalEvaluationCurrentCallRequestDto.ts new file mode 100644 index 00000000..525dc913 --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentCallRequestDto.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface GoalEvaluationCurrentCallRequestDto { + callId: string; + goalId: string; +} diff --git a/src/api/types/GoalEvaluationCurrentCallResponseDto.ts b/src/api/types/GoalEvaluationCurrentCallResponseDto.ts new file mode 100644 index 00000000..7766bab3 --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentCallResponseDto.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GoalEvaluationCurrentCallResponseDto { + callId: string; + goalId: string; + /** Current revision of the requested goal for a visible call with a registered evaluation. Absent when the call has no registered evaluation, when that goal does not belong to the source assistant, or when the source is hidden. An absent evaluation does not imply queued or pending work. */ + currentGoalVersion?: string | undefined; + currentEvaluation?: Vapi.GoalEvaluationCurrentDto | undefined; +} diff --git a/src/api/types/GoalEvaluationCurrentDto.ts b/src/api/types/GoalEvaluationCurrentDto.ts new file mode 100644 index 00000000..30cdb76f --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentDto.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GoalEvaluationCurrentDto { + assistantId: string; + goalId: string; + /** Current immutable goal revision, encoded as a decimal bigint string. */ + goalVersion: string; + callEndedAt: string; + processingState: Vapi.GoalEvaluationCurrentDtoProcessingState; + /** Absent until a semantic result is accepted. Processing failures are never goal_not_met. */ + goalOutcome?: Vapi.GoalEvaluationCurrentDtoGoalOutcome | undefined; +} diff --git a/src/api/types/GoalEvaluationCurrentDtoGoalOutcome.ts b/src/api/types/GoalEvaluationCurrentDtoGoalOutcome.ts new file mode 100644 index 00000000..6936103c --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentDtoGoalOutcome.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Absent until a semantic result is accepted. Processing failures are never goal_not_met. */ +export const GoalEvaluationCurrentDtoGoalOutcome = { + GoalMet: "goal_met", + GoalNotMet: "goal_not_met", + NotApplicable: "not_applicable", +} as const; +export type GoalEvaluationCurrentDtoGoalOutcome = + (typeof GoalEvaluationCurrentDtoGoalOutcome)[keyof typeof GoalEvaluationCurrentDtoGoalOutcome]; diff --git a/src/api/types/GoalEvaluationCurrentDtoProcessingState.ts b/src/api/types/GoalEvaluationCurrentDtoProcessingState.ts new file mode 100644 index 00000000..0945992c --- /dev/null +++ b/src/api/types/GoalEvaluationCurrentDtoProcessingState.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GoalEvaluationCurrentDtoProcessingState = { + Pending: "pending", + Running: "running", + Parked: "parked", + Unavailable: "unavailable", + Excluded: "excluded", + Completed: "completed", +} as const; +export type GoalEvaluationCurrentDtoProcessingState = + (typeof GoalEvaluationCurrentDtoProcessingState)[keyof typeof GoalEvaluationCurrentDtoProcessingState]; diff --git a/src/api/types/GoogleCalendarCheckAvailabilityTool.ts b/src/api/types/GoogleCalendarCheckAvailabilityTool.ts index e0f65e67..5e67a091 100644 --- a/src/api/types/GoogleCalendarCheckAvailabilityTool.ts +++ b/src/api/types/GoogleCalendarCheckAvailabilityTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoogleCalendarCheckAvailabilityTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoogleCalendarCheckAvailabilityToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoogleCalendarCreateEventTool.ts b/src/api/types/GoogleCalendarCreateEventTool.ts index 879c0f3e..e29a01fc 100644 --- a/src/api/types/GoogleCalendarCreateEventTool.ts +++ b/src/api/types/GoogleCalendarCreateEventTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoogleCalendarCreateEventTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoogleCalendarCreateEventToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoogleModel.ts b/src/api/types/GoogleModel.ts index 86614704..0c56c5eb 100644 --- a/src/api/types/GoogleModel.ts +++ b/src/api/types/GoogleModel.ts @@ -38,7 +38,7 @@ export interface GoogleModel { realtimeConfig?: Vapi.GoogleRealtimeConfig | undefined; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/GoogleModelModel.ts b/src/api/types/GoogleModelModel.ts index f70daec7..875c32a0 100644 --- a/src/api/types/GoogleModelModel.ts +++ b/src/api/types/GoogleModelModel.ts @@ -2,6 +2,7 @@ /** This is the Google model that will be used. */ export const GoogleModelModel = { + Gemini38Flash: "gemini-3.8-flash", Gemini35Flash: "gemini-3.5-flash", Gemini31FlashLite: "gemini-3.1-flash-lite", Gemini3FlashPreview: "gemini-3-flash-preview", diff --git a/src/api/types/GoogleSheetsRowAppendTool.ts b/src/api/types/GoogleSheetsRowAppendTool.ts index 54d8cc33..238afe04 100644 --- a/src/api/types/GoogleSheetsRowAppendTool.ts +++ b/src/api/types/GoogleSheetsRowAppendTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface GoogleSheetsRowAppendTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.GoogleSheetsRowAppendToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/GoogleTranscriberModel.ts b/src/api/types/GoogleTranscriberModel.ts index ef981704..d31fef75 100644 --- a/src/api/types/GoogleTranscriberModel.ts +++ b/src/api/types/GoogleTranscriberModel.ts @@ -2,6 +2,7 @@ /** This is the model that will be used for the transcription. */ export const GoogleTranscriberModel = { + Gemini38Flash: "gemini-3.8-flash", Gemini35Flash: "gemini-3.5-flash", Gemini31FlashLite: "gemini-3.1-flash-lite", Gemini3FlashPreview: "gemini-3-flash-preview", diff --git a/src/api/types/GroqModel.ts b/src/api/types/GroqModel.ts index fff09ff9..9e2ae817 100644 --- a/src/api/types/GroqModel.ts +++ b/src/api/types/GroqModel.ts @@ -33,7 +33,7 @@ export interface GroqModel { model: Vapi.GroqModelModel; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/GuardrailAuthoring.ts b/src/api/types/GuardrailAuthoring.ts new file mode 100644 index 00000000..76b5f1fe --- /dev/null +++ b/src/api/types/GuardrailAuthoring.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 GuardrailAuthoring { + mode: Vapi.GuardrailAuthoringMode; + behavior: string; + /** Natural-language condition evaluated using the candidate and call history. */ + condition?: string | undefined; +} diff --git a/src/api/types/GuardrailAuthoringMode.ts b/src/api/types/GuardrailAuthoringMode.ts new file mode 100644 index 00000000..c70748dc --- /dev/null +++ b/src/api/types/GuardrailAuthoringMode.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailAuthoringMode = { + Always: "always", + Never: "never", +} as const; +export type GuardrailAuthoringMode = (typeof GuardrailAuthoringMode)[keyof typeof GuardrailAuthoringMode]; diff --git a/src/api/types/GuardrailEscalateAction.ts b/src/api/types/GuardrailEscalateAction.ts new file mode 100644 index 00000000..c8161d79 --- /dev/null +++ b/src/api/types/GuardrailEscalateAction.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GuardrailEscalateAction { + type: Vapi.GuardrailEscalateActionType; + /** Existing same-organization tool; attachment is checked at assignment. Tool edits/deletion can invalidate the action: activation must revalidate the current tool and arguments, and use failurePolicy on failure. */ + toolId: string; + /** Parameter names follow the normalized tool schema (SMS uses body/to). */ + arguments: Record; +} diff --git a/src/api/types/GuardrailEscalateActionType.ts b/src/api/types/GuardrailEscalateActionType.ts new file mode 100644 index 00000000..789fd8dd --- /dev/null +++ b/src/api/types/GuardrailEscalateActionType.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailEscalateActionType = { + Escalate: "escalate", +} as const; +export type GuardrailEscalateActionType = + (typeof GuardrailEscalateActionType)[keyof typeof GuardrailEscalateActionType]; diff --git a/src/api/types/GuardrailFixedResponseAction.ts b/src/api/types/GuardrailFixedResponseAction.ts new file mode 100644 index 00000000..f20b393d --- /dev/null +++ b/src/api/types/GuardrailFixedResponseAction.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GuardrailFixedResponseAction { + type: Vapi.GuardrailFixedResponseActionType; + /** Replacement speech; it must pass its own guardrail evaluation. */ + text: string; +} diff --git a/src/api/types/GuardrailFixedResponseActionType.ts b/src/api/types/GuardrailFixedResponseActionType.ts new file mode 100644 index 00000000..5770c795 --- /dev/null +++ b/src/api/types/GuardrailFixedResponseActionType.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailFixedResponseActionType = { + AutoResponse: "auto-response", +} as const; +export type GuardrailFixedResponseActionType = + (typeof GuardrailFixedResponseActionType)[keyof typeof GuardrailFixedResponseActionType]; diff --git a/src/api/types/GuardrailPack.ts b/src/api/types/GuardrailPack.ts new file mode 100644 index 00000000..17601c71 --- /dev/null +++ b/src/api/types/GuardrailPack.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface GuardrailPack { + id: string; + orgId: string; + createdAt: string; + updatedAt: string; + name: string; + /** Projected from membership rows; a supplied array replaces membership. */ + ruleIds: string[]; +} diff --git a/src/api/types/GuardrailPacksPage.ts b/src/api/types/GuardrailPacksPage.ts new file mode 100644 index 00000000..321bf7cc --- /dev/null +++ b/src/api/types/GuardrailPacksPage.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GuardrailPacksPage { + results: Vapi.GuardrailPack[]; + metadata: Vapi.PaginationMeta; +} diff --git a/src/api/types/GuardrailRedirectAction.ts b/src/api/types/GuardrailRedirectAction.ts new file mode 100644 index 00000000..a1126c23 --- /dev/null +++ b/src/api/types/GuardrailRedirectAction.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GuardrailRedirectAction { + type: Vapi.GuardrailRedirectActionType; + /** Steering instructions for generating a replacement candidate. */ + instructions: string; +} diff --git a/src/api/types/GuardrailRedirectActionType.ts b/src/api/types/GuardrailRedirectActionType.ts new file mode 100644 index 00000000..476b5b58 --- /dev/null +++ b/src/api/types/GuardrailRedirectActionType.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const GuardrailRedirectActionType = { + AutoResponse: "auto-response", +} as const; +export type GuardrailRedirectActionType = + (typeof GuardrailRedirectActionType)[keyof typeof GuardrailRedirectActionType]; diff --git a/src/api/types/GuardrailRule.ts b/src/api/types/GuardrailRule.ts new file mode 100644 index 00000000..326d2c91 --- /dev/null +++ b/src/api/types/GuardrailRule.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 GuardrailRule { + id: string; + orgId: string; + createdAt: string; + updatedAt: string; + name: string; + /** Structured editor input. Supplied PATCH authoring replaces the complete object; advanced text writes clear it to null. */ + authoring?: (Vapi.GuardrailAuthoring | null) | undefined; + /** Evaluated instructions, generated from authoring or supplied in advanced mode. */ + instructions?: string | undefined; + /** Evaluation sensitivity; numeric cutoffs are internal and provisional. */ + sensitivity: Vapi.GuardrailRuleSensitivity; + /** Supplied PATCH actions replace the complete variant. */ + action: Vapi.GuardrailRuleAction; +} diff --git a/src/api/types/GuardrailRuleAction.ts b/src/api/types/GuardrailRuleAction.ts new file mode 100644 index 00000000..9faf150c --- /dev/null +++ b/src/api/types/GuardrailRuleAction.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * Supplied PATCH actions replace the complete variant. + */ +export type GuardrailRuleAction = Vapi.GuardrailRuleActionZero | Vapi.GuardrailEscalateAction; diff --git a/src/api/types/GuardrailRuleActionZero.ts b/src/api/types/GuardrailRuleActionZero.ts new file mode 100644 index 00000000..012f4d33 --- /dev/null +++ b/src/api/types/GuardrailRuleActionZero.ts @@ -0,0 +1,15 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export type GuardrailRuleActionZero = Vapi.GuardrailRuleActionZero.Fixed | Vapi.GuardrailRuleActionZero.Redirect; + +export namespace GuardrailRuleActionZero { + export interface Fixed extends Vapi.GuardrailFixedResponseAction { + mode: "fixed"; + } + + export interface Redirect extends Vapi.GuardrailRedirectAction { + mode: "redirect"; + } +} diff --git a/src/api/types/GuardrailRuleSensitivity.ts b/src/api/types/GuardrailRuleSensitivity.ts new file mode 100644 index 00000000..653e0d58 --- /dev/null +++ b/src/api/types/GuardrailRuleSensitivity.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Evaluation sensitivity; numeric cutoffs are internal and provisional. */ +export const GuardrailRuleSensitivity = { + Low: "low", + Medium: "medium", + Aggressive: "aggressive", +} as const; +export type GuardrailRuleSensitivity = (typeof GuardrailRuleSensitivity)[keyof typeof GuardrailRuleSensitivity]; diff --git a/src/api/types/GuardrailRulesPage.ts b/src/api/types/GuardrailRulesPage.ts new file mode 100644 index 00000000..127b556d --- /dev/null +++ b/src/api/types/GuardrailRulesPage.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface GuardrailRulesPage { + results: Vapi.GuardrailRule[]; + metadata: Vapi.PaginationMeta; +} diff --git a/src/api/types/HandoffDestinationAssistant.ts b/src/api/types/HandoffDestinationAssistant.ts index 5d86eb0e..a9894b6b 100644 --- a/src/api/types/HandoffDestinationAssistant.ts +++ b/src/api/types/HandoffDestinationAssistant.ts @@ -15,7 +15,7 @@ export interface HandoffDestinationAssistant { /** This is the assistant id to transfer the call to. You must provide either assistantName or assistantId. */ assistantId?: string | undefined; /** This is a transient assistant to transfer the call to. You may provide a transient assistant in the response `handoff-destination-request` in a dynamic handoff. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** This is the variable extraction plan for the handoff tool. */ variableExtractionPlan?: Vapi.VariableExtractionPlan | undefined; /** These are the assistant overrides to apply to the destination assistant. */ diff --git a/src/api/types/HandoffTool.ts b/src/api/types/HandoffTool.ts index 8c3e49b5..7aaf041e 100644 --- a/src/api/types/HandoffTool.ts +++ b/src/api/types/HandoffTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface HandoffTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.HandoffToolMessagesItem[] | undefined; /** This is the default local tool result message used when no runtime handoff result override is returned. */ diff --git a/src/api/types/InflectionAiModel.ts b/src/api/types/InflectionAiModel.ts index 56383e78..75dc8db8 100644 --- a/src/api/types/InflectionAiModel.ts +++ b/src/api/types/InflectionAiModel.ts @@ -33,7 +33,7 @@ export interface InflectionAiModel { model: Vapi.InflectionAiModelModel; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/JsonQueryOnCallTableWithNumberTypeColumn.ts b/src/api/types/JsonQueryOnCallTableWithNumberTypeColumn.ts index 0ae0feed..dac28f95 100644 --- a/src/api/types/JsonQueryOnCallTableWithNumberTypeColumn.ts +++ b/src/api/types/JsonQueryOnCallTableWithNumberTypeColumn.ts @@ -24,6 +24,7 @@ export interface JsonQueryOnCallTableWithNumberTypeColumn { /** * This is the aggregation operation to perform on the column. * When the column is a number type, the operation must be one of the following: + * - count * - average * - sum * - min diff --git a/src/api/types/JsonQueryOnCallTableWithNumberTypeColumnOperation.ts b/src/api/types/JsonQueryOnCallTableWithNumberTypeColumnOperation.ts index e859b1ee..1d1de874 100644 --- a/src/api/types/JsonQueryOnCallTableWithNumberTypeColumnOperation.ts +++ b/src/api/types/JsonQueryOnCallTableWithNumberTypeColumnOperation.ts @@ -3,12 +3,14 @@ /** * This is the aggregation operation to perform on the column. * When the column is a number type, the operation must be one of the following: + * - count * - average * - sum * - min * - max */ export const JsonQueryOnCallTableWithNumberTypeColumnOperation = { + Count: "count", Average: "average", Sum: "sum", Min: "min", diff --git a/src/api/types/JsonQueryOnEventsTable.ts b/src/api/types/JsonQueryOnEventsTable.ts index a060dfc6..312c4bdb 100644 --- a/src/api/types/JsonQueryOnEventsTable.ts +++ b/src/api/types/JsonQueryOnEventsTable.ts @@ -15,6 +15,8 @@ export interface JsonQueryOnEventsTable { table: Vapi.JsonQueryOnEventsTableTable; /** The event type to query */ on: Vapi.JsonQueryOnEventsTableOn; + /** The structured output an evaluation monitor tracks, as artifact.structuredOutputs[OutputID] */ + column?: string | undefined; /** * This is the operation to perform on matching events. * - "count": Returns the raw count of matching events diff --git a/src/api/types/JsonQueryOnEventsTableOn.ts b/src/api/types/JsonQueryOnEventsTableOn.ts index 8b99231c..87b13ba4 100644 --- a/src/api/types/JsonQueryOnEventsTableOn.ts +++ b/src/api/types/JsonQueryOnEventsTableOn.ts @@ -33,6 +33,8 @@ export const JsonQueryOnEventsTableOn = { CallHookTriggered: "call.hookTriggered", CallHookSucceeded: "call.hookSucceeded", CallHookFailed: "call.hookFailed", + ServerMessageRequestSucceeded: "serverMessage.requestSucceeded", + ServerMessageRequestFailed: "serverMessage.requestFailed", CallStatusReceived: "call.statusReceived", CallSilenceTimeout: "call.silenceTimeout", CallMicrophoneTimeout: "call.microphoneTimeout", @@ -102,5 +104,6 @@ export const JsonQueryOnEventsTableOn = { PipelineEndpointingTriggered: "pipeline.endpointingTriggered", PipelineFirstMessageStarted: "pipeline.firstMessageStarted", PipelineFirstMessageCompleted: "pipeline.firstMessageCompleted", + PipelineDenoiserFailed: "pipeline.denoiserFailed", } as const; export type JsonQueryOnEventsTableOn = (typeof JsonQueryOnEventsTableOn)[keyof typeof JsonQueryOnEventsTableOn]; diff --git a/src/api/types/KnowledgeBaseModel.ts b/src/api/types/KnowledgeBaseModel.ts index 8588d15b..b67acf88 100644 --- a/src/api/types/KnowledgeBaseModel.ts +++ b/src/api/types/KnowledgeBaseModel.ts @@ -2,6 +2,7 @@ /** The model to use for the knowledge base */ export const KnowledgeBaseModel = { + Gemini38Flash: "gemini-3.8-flash", Gemini35Flash: "gemini-3.5-flash", Gemini31FlashLite: "gemini-3.1-flash-lite", Gemini3FlashPreview: "gemini-3-flash-preview", diff --git a/src/api/types/KnowledgeBaseTool.ts b/src/api/types/KnowledgeBaseTool.ts index 4517ac6c..81d16cdf 100644 --- a/src/api/types/KnowledgeBaseTool.ts +++ b/src/api/types/KnowledgeBaseTool.ts @@ -4,6 +4,8 @@ import type * as Vapi from "../index.js"; export interface KnowledgeBaseTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.KnowledgeBaseToolMessagesItem[] | undefined; /** The knowledge base this tool searches. At most one search tool references a knowledge base. Deleting the base also deletes its generated tool; null references are retained only for backward compatibility and are inert. */ diff --git a/src/api/types/LangfuseCredential.ts b/src/api/types/LangfuseCredential.ts index 0a94f8a7..4bd3d778 100644 --- a/src/api/types/LangfuseCredential.ts +++ b/src/api/types/LangfuseCredential.ts @@ -10,6 +10,8 @@ export interface LangfuseCredential { apiKey: string; /** The host URL for Langfuse project. Eg: https://cloud.langfuse.com */ apiUrl: string; + /** The semver version of your Langfuse server, e.g. 3.63.0, as its /api/public/health endpoint reports it. Optional. */ + serverVersion?: string | undefined; /** 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/LatencyEvaluationResultMetric.ts b/src/api/types/LatencyEvaluationResultMetric.ts index a01036f7..d358497c 100644 --- a/src/api/types/LatencyEvaluationResultMetric.ts +++ b/src/api/types/LatencyEvaluationResultMetric.ts @@ -5,6 +5,8 @@ export const LatencyEvaluationResultMetric = { Turn: "turn", Model: "model", Voice: "voice", + Transcriber: "transcriber", + Endpointing: "endpointing", } as const; export type LatencyEvaluationResultMetric = (typeof LatencyEvaluationResultMetric)[keyof typeof LatencyEvaluationResultMetric]; diff --git a/src/api/types/LatencyExpectation.ts b/src/api/types/LatencyExpectation.ts index 207c2c8e..1ebe5b0f 100644 --- a/src/api/types/LatencyExpectation.ts +++ b/src/api/types/LatencyExpectation.ts @@ -8,6 +8,10 @@ export interface LatencyExpectation { * - turn: total time from the end of user speech to the start of assistant speech * - model: LLM time to first token * - voice: TTS time to first audio + * - transcriber: time from the end of user speech to the transcript's words being known + * - endpointing: time from the transcript's words being known to deciding the user finished their turn + * + * Turns where a component was not measured are left out of that metric. */ metric: Vapi.LatencyExpectationMetric; /** diff --git a/src/api/types/LatencyExpectationMetric.ts b/src/api/types/LatencyExpectationMetric.ts index 5be7408a..8702407a 100644 --- a/src/api/types/LatencyExpectationMetric.ts +++ b/src/api/types/LatencyExpectationMetric.ts @@ -5,10 +5,16 @@ * - turn: total time from the end of user speech to the start of assistant speech * - model: LLM time to first token * - voice: TTS time to first audio + * - transcriber: time from the end of user speech to the transcript's words being known + * - endpointing: time from the transcript's words being known to deciding the user finished their turn + * + * Turns where a component was not measured are left out of that metric. */ export const LatencyExpectationMetric = { Turn: "turn", Model: "model", Voice: "voice", + Transcriber: "transcriber", + Endpointing: "endpointing", } as const; export type LatencyExpectationMetric = (typeof LatencyExpectationMetric)[keyof typeof LatencyExpectationMetric]; diff --git a/src/api/types/LineInsightFromCallTableQueriesItem.ts b/src/api/types/LineInsightFromCallTableQueriesItem.ts index 9114452d..f657bb95 100644 --- a/src/api/types/LineInsightFromCallTableQueriesItem.ts +++ b/src/api/types/LineInsightFromCallTableQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type LineInsightFromCallTableQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/LineInsightQueriesItem.ts b/src/api/types/LineInsightQueriesItem.ts index 32c84ad9..3af57ab1 100644 --- a/src/api/types/LineInsightQueriesItem.ts +++ b/src/api/types/LineInsightQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type LineInsightQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/LogicEdgeCondition.ts b/src/api/types/LogicEdgeCondition.ts deleted file mode 100644 index c4a4694e..00000000 --- a/src/api/types/LogicEdgeCondition.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type LogicEdgeCondition = unknown; diff --git a/src/api/types/MakeTool.ts b/src/api/types/MakeTool.ts index df49247e..0ede9a7f 100644 --- a/src/api/types/MakeTool.ts +++ b/src/api/types/MakeTool.ts @@ -4,6 +4,8 @@ import type * as Vapi from "../index.js"; export interface MakeTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.MakeToolMessagesItem[] | undefined; /** The type of tool. "make" for Make tool. */ diff --git a/src/api/types/McpTool.ts b/src/api/types/McpTool.ts index b4405281..8a9679e8 100644 --- a/src/api/types/McpTool.ts +++ b/src/api/types/McpTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface McpTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.McpToolMessagesItem[] | undefined; /** diff --git a/src/api/types/MinimaxLlmModel.ts b/src/api/types/MinimaxLlmModel.ts index ef5aa414..6f1bf3c1 100644 --- a/src/api/types/MinimaxLlmModel.ts +++ b/src/api/types/MinimaxLlmModel.ts @@ -33,7 +33,7 @@ export interface MinimaxLlmModel { model: Vapi.MinimaxLlmModelModel; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/ModelCost.ts b/src/api/types/ModelCost.ts index 7b35f1bb..bebcec8c 100644 --- a/src/api/types/ModelCost.ts +++ b/src/api/types/ModelCost.ts @@ -1,5 +1,7 @@ // This file was auto-generated by Fern from our API Definition. +import type * as Vapi from "../index.js"; + /** * Language-model cost for a call, including model, token usage, and amount. */ @@ -32,6 +34,12 @@ export interface ModelCost { * This is a **subset of `completionTokens`**, not an addition to it: reasoning tokens are already counted in `completionTokens` and are already billed at the output-token rate. It is reported separately for visibility only and does not affect `cost`. */ reasoningTokens?: number | undefined; + /** + * This is the cost split by OpenAI service tier. It is only set on call costs, and only when OpenAI reported the tier it served for a request that asked for Fast mode. + * + * There is one row per reported tier, plus one row without `serviceTier` for usage with no reported tier. The rows add up to the token counts above, and to `cost` within rounding. + */ + serviceTierBreakdown?: Vapi.ModelCostServiceTierBreakdown[] | undefined; /** This is the cost of the component in USD. */ cost: number; } diff --git a/src/api/types/ModelCostServiceTierBreakdown.ts b/src/api/types/ModelCostServiceTierBreakdown.ts new file mode 100644 index 00000000..a6501ede --- /dev/null +++ b/src/api/types/ModelCostServiceTierBreakdown.ts @@ -0,0 +1,16 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface ModelCostServiceTierBreakdown { + /** This is the service tier OpenAI reported serving a request that asked for Fast mode, in Vapi's names: `fast` when Fast mode was served, otherwise the tier served, such as `default`. It is absent on the row for usage with no reported tier: requests that did not ask for Fast mode, requests that ended before OpenAI reported a tier, and other providers. */ + serviceTier?: string | undefined; + /** This is the cost in USD of the usage at this tier, rounded to 8 decimal places. */ + cost: number; + /** This is the number of prompt tokens used at this tier. */ + promptTokens: number; + /** This is the number of completion tokens generated at this tier. */ + completionTokens: number; + /** This is the number of cached prompt tokens used at this tier. This is a subset of `promptTokens`, not an addition to it. */ + cachedPromptTokens?: number | undefined; + /** This is the number of reasoning tokens generated at this tier. This is a subset of `completionTokens`, not an addition to it. */ + reasoningTokens?: number | undefined; +} diff --git a/src/api/types/NeetsVoice.ts b/src/api/types/NeetsVoice.ts deleted file mode 100644 index b80df516..00000000 --- a/src/api/types/NeetsVoice.ts +++ /dev/null @@ -1,5 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export interface NeetsVoice { - voiceId?: unknown | undefined; -} diff --git a/src/api/types/OpenAiModel.ts b/src/api/types/OpenAiModel.ts index d387779b..90383eee 100644 --- a/src/api/types/OpenAiModel.ts +++ b/src/api/types/OpenAiModel.ts @@ -74,15 +74,16 @@ export interface OpenAiModel { */ promptCacheKey?: string | undefined; /** - * This is the OpenAI service tier used for chat completions requests. + * This is the OpenAI service tier to request. * - * - `fast`: OpenAI's fast processing tier (renamed from `priority` on 2026-07-30; both values are accepted and billed identically) — up to ~2.5x faster inference at 2x the standard token rates. OpenAI may silently downgrade a fast request to standard processing under ramp limits; when that happens the response reports the served tier and the request is billed at standard rates. - * - `auto`: uses the service tier configured for the OpenAI project. - * - `default`: standard processing and billing. + * - `fast`: requests Fast mode, which gives faster responses at a higher per-token rate. How much faster depends on the model. + * - `priority`: the old name for `fast`, accepted and billed the same. + * - `default`: standard processing. + * - `auto`: the default when unset. On Vapi's OpenAI keys this is standard processing; on your own OpenAI key, OpenAI applies your project's default tier. * - * Only applies to models that support fast processing: gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5. Ignored for other models. + * OpenAI sets Fast mode rates per model, and they are not a fixed multiple of the standard rates. Vapi bills them only when OpenAI reports that it served the request in Fast mode. Otherwise the request is billed at standard rates, for example when Fast mode isn't available for the model on Vapi, OpenAI downgrades the request, or the request runs on Azure OpenAI. * - * @default undefined (uses the service tier configured for the OpenAI project) + * Supported models and their Fast mode rates: https://docs.vapi.ai/providers/model/openai */ serviceTier?: Vapi.OpenAiModelServiceTier | undefined; /** @@ -94,7 +95,7 @@ export interface OpenAiModel { reasoningEffort?: Vapi.OpenAiModelReasoningEffort | undefined; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/OpenAiModelServiceTier.ts b/src/api/types/OpenAiModelServiceTier.ts index bdae06b6..466db559 100644 --- a/src/api/types/OpenAiModelServiceTier.ts +++ b/src/api/types/OpenAiModelServiceTier.ts @@ -1,15 +1,16 @@ // This file was auto-generated by Fern from our API Definition. /** - * This is the OpenAI service tier used for chat completions requests. + * This is the OpenAI service tier to request. * - * - `fast`: OpenAI's fast processing tier (renamed from `priority` on 2026-07-30; both values are accepted and billed identically) — up to ~2.5x faster inference at 2x the standard token rates. OpenAI may silently downgrade a fast request to standard processing under ramp limits; when that happens the response reports the served tier and the request is billed at standard rates. - * - `auto`: uses the service tier configured for the OpenAI project. - * - `default`: standard processing and billing. + * - `fast`: requests Fast mode, which gives faster responses at a higher per-token rate. How much faster depends on the model. + * - `priority`: the old name for `fast`, accepted and billed the same. + * - `default`: standard processing. + * - `auto`: the default when unset. On Vapi's OpenAI keys this is standard processing; on your own OpenAI key, OpenAI applies your project's default tier. * - * Only applies to models that support fast processing: gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5. Ignored for other models. + * OpenAI sets Fast mode rates per model, and they are not a fixed multiple of the standard rates. Vapi bills them only when OpenAI reports that it served the request in Fast mode. Otherwise the request is billed at standard rates, for example when Fast mode isn't available for the model on Vapi, OpenAI downgrades the request, or the request runs on Azure OpenAI. * - * @default undefined (uses the service tier configured for the OpenAI project) + * Supported models and their Fast mode rates: https://docs.vapi.ai/providers/model/openai */ export const OpenAiModelServiceTier = { Auto: "auto", diff --git a/src/api/types/OpenAiTranscriber.ts b/src/api/types/OpenAiTranscriber.ts index 5e7c8de5..94c8b1e8 100644 --- a/src/api/types/OpenAiTranscriber.ts +++ b/src/api/types/OpenAiTranscriber.ts @@ -6,10 +6,23 @@ import type * as Vapi from "../index.js"; * Configuration for transcribing speech during assistant conversations with OpenAI, including model, language, and fallback settings. */ export interface OpenAiTranscriber { - /** This is the model that will be used for the transcription. */ + /** + * This is the model that will be used for the transcription. + * Digit formatting can differ by model: `gpt-transcribe` may write spoken digit strings as words (for example, "four seven two"), where `gpt-4o-transcribe` and `gpt-4o-mini-transcribe` may write them as digits ("472"). Do not rely on either format. + */ model: Vapi.OpenAiTranscriberModel; /** This is the language that will be set for the transcription. */ language?: Vapi.OpenAiTranscriberLanguage | undefined; + /** + * These are words and phrases the model should recognize, such as names, brands, and product terms. + * Supported only by `gpt-transcribe`. Each keyword is one line and must not contain `<` or `>`. Maximum 16,384 keywords. + */ + keywords?: string[] | undefined; + /** + * This is free-text context for the transcription, such as the topic of the call or the expected vocabulary. + * Maximum length: 8,192 characters for `gpt-transcribe`, and 1,024 characters for `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`. + */ + prompt?: string | undefined; /** This is the plan for transcriber provider fallbacks in the event that the primary transcriber provider fails. */ fallbackPlan?: Vapi.FallbackTranscriberPlan | undefined; } diff --git a/src/api/types/OpenAiTranscriberModel.ts b/src/api/types/OpenAiTranscriberModel.ts index fd23e358..4e2f5e11 100644 --- a/src/api/types/OpenAiTranscriberModel.ts +++ b/src/api/types/OpenAiTranscriberModel.ts @@ -1,8 +1,12 @@ // This file was auto-generated by Fern from our API Definition. -/** This is the model that will be used for the transcription. */ +/** + * This is the model that will be used for the transcription. + * Digit formatting can differ by model: `gpt-transcribe` may write spoken digit strings as words (for example, "four seven two"), where `gpt-4o-transcribe` and `gpt-4o-mini-transcribe` may write them as digits ("472"). Do not rely on either format. + */ export const OpenAiTranscriberModel = { Gpt4OTranscribe: "gpt-4o-transcribe", Gpt4OMiniTranscribe: "gpt-4o-mini-transcribe", + GptTranscribe: "gpt-transcribe", } as const; export type OpenAiTranscriberModel = (typeof OpenAiTranscriberModel)[keyof typeof OpenAiTranscriberModel]; diff --git a/src/api/types/OpenAiVoice.ts b/src/api/types/OpenAiVoice.ts index cf496f60..c4146bff 100644 --- a/src/api/types/OpenAiVoice.ts +++ b/src/api/types/OpenAiVoice.ts @@ -10,8 +10,7 @@ export interface OpenAiVoice { cachingEnabled?: boolean | undefined; /** * This is the provider-specific ID that will be used. - * Voice availability depends on the selected model. - * quartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder are only supported with GPT-Live models. + * Voice availability depends on the selected model: voices offered only by GPT-Live are rejected for other models. */ voiceId: Vapi.OpenAiVoiceId; /** This is the model that will be used for text-to-speech. */ diff --git a/src/api/types/OpenAiVoiceId.ts b/src/api/types/OpenAiVoiceId.ts index a6a59858..09311b00 100644 --- a/src/api/types/OpenAiVoiceId.ts +++ b/src/api/types/OpenAiVoiceId.ts @@ -4,7 +4,6 @@ import type * as Vapi from "../index.js"; /** * This is the provider-specific ID that will be used. - * Voice availability depends on the selected model. - * quartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder are only supported with GPT-Live models. + * Voice availability depends on the selected model: voices offered only by GPT-Live are rejected for other models. */ export type OpenAiVoiceId = Vapi.OpenAiVoiceIdEnum | string; diff --git a/src/api/types/OpenAiVoiceIdEnum.ts b/src/api/types/OpenAiVoiceIdEnum.ts index 3d9bab02..0323e103 100644 --- a/src/api/types/OpenAiVoiceIdEnum.ts +++ b/src/api/types/OpenAiVoiceIdEnum.ts @@ -13,14 +13,23 @@ export const OpenAiVoiceIdEnum = { Ballad: "ballad", Beacon: "beacon", Bossa: "bossa", + Brise: "brise", Cinder: "cinder", Coral: "coral", Delta: "delta", + Flitz: "flitz", Gleam: "gleam", + Harema: "harema", + Juni: "juni", Meridian: "meridian", + Nira: "nira", + Noeul: "noeul", + Nuri: "nuri", Quartz: "quartz", Ripple: "ripple", Sage: "sage", + Shida: "shida", + Sillage: "sillage", Stone: "stone", Tempo: "tempo", Verse: "verse", diff --git a/src/api/types/OpenAiWebChatRequest.ts b/src/api/types/OpenAiWebChatRequest.ts index fb07cddc..2e2370a9 100644 --- a/src/api/types/OpenAiWebChatRequest.ts +++ b/src/api/types/OpenAiWebChatRequest.ts @@ -6,7 +6,7 @@ export interface OpenAiWebChatRequest { /** This is the assistant ID to use for this chat. To use a transient assistant, use `assistant` instead. */ assistantId?: string | undefined; /** This is the transient assistant configuration for this chat. To use an existing assistant, use `assistantId` instead. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** * This is the ID of the session that will be used for the chat. * If provided, the conversation will continue from the previous state. diff --git a/src/api/types/OpenRouterModel.ts b/src/api/types/OpenRouterModel.ts index be14d25b..0cb84822 100644 --- a/src/api/types/OpenRouterModel.ts +++ b/src/api/types/OpenRouterModel.ts @@ -33,7 +33,7 @@ export interface OpenRouterModel { model: string; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/OutputTool.ts b/src/api/types/OutputTool.ts index 3741a75f..acddebaf 100644 --- a/src/api/types/OutputTool.ts +++ b/src/api/types/OutputTool.ts @@ -4,6 +4,8 @@ import type * as Vapi from "../index.js"; export interface OutputTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.OutputToolMessagesItem[] | undefined; /** The type of tool. "output" for Output tool. */ diff --git a/src/api/types/PerformanceMetrics.ts b/src/api/types/PerformanceMetrics.ts index 618c467f..1d737eb2 100644 --- a/src/api/types/PerformanceMetrics.ts +++ b/src/api/types/PerformanceMetrics.ts @@ -6,11 +6,20 @@ import type * as Vapi from "../index.js"; * Call performance measurements, including per-turn and average provider, endpointing, transport, and interruption metrics. */ export interface PerformanceMetrics { - /** These are the individual latencies for each turn. */ + /** + * These are the individual latencies for each turn, in milliseconds, measured on Vapi's servers without network or playback time. + * A turn is recorded only when the assistant replies to the user. A first message the assistant speaks first is not recorded; with `assistant-waits-for-user` it is recorded, with `endpointingLatency` 0. A component that was not measured on a turn is 0. + */ turnLatencies?: Vapi.TurnLatency[] | undefined; - /** This is the average latency for the model to output the first token. */ + /** + * This is the average `modelLatency` across `turnLatencies`, in milliseconds. + * Turns that recorded 0 because the model latency was not measured are included in the average. + */ modelLatencyAverage?: number | undefined; - /** This is the average latency for the text to speech. */ + /** + * This is the average `voiceLatency` across `turnLatencies`, in milliseconds. + * Turns that recorded 0 because the voice latency was not measured are included in the average. + */ voiceLatencyAverage?: number | undefined; /** This is the average latency for the transcriber. */ transcriberLatencyAverage?: number | undefined; @@ -26,4 +35,9 @@ export interface PerformanceMetrics { numUserInterrupted?: number | undefined; /** This is the number of times the assistant was interrupted by the user during the call. */ numAssistantInterrupted?: number | undefined; + /** + * This is `true` when the call was recorded with `TurnLatency.unmeasured`, so a turn without that list had every component measured. + * Absent on calls recorded before `unmeasured` existed, where a 0 latency may mean either 0ms or "not measured". + */ + turnLatencyUnmeasuredTracked?: boolean | undefined; } diff --git a/src/api/types/PerplexityAiModel.ts b/src/api/types/PerplexityAiModel.ts index e9c56085..733002da 100644 --- a/src/api/types/PerplexityAiModel.ts +++ b/src/api/types/PerplexityAiModel.ts @@ -33,7 +33,7 @@ export interface PerplexityAiModel { model: string; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/Personality.ts b/src/api/types/Personality.ts index 26ef0450..a9f106af 100644 --- a/src/api/types/Personality.ts +++ b/src/api/types/Personality.ts @@ -20,7 +20,7 @@ export interface Personality { * This is the full assistant configuration for this personality. * It defines the tester's voice, model, behavior via system prompt, and other settings. */ - assistant: Vapi.CreateAssistantDto; + assistant: Vapi.TransientAssistantDto; /** * Optional folder path for organizing personalities. * Supports up to 3 levels (e.g., "dept/feature/variant"). diff --git a/src/api/types/PieInsightFromCallTableQueriesItem.ts b/src/api/types/PieInsightFromCallTableQueriesItem.ts index 836d4c08..5815981c 100644 --- a/src/api/types/PieInsightFromCallTableQueriesItem.ts +++ b/src/api/types/PieInsightFromCallTableQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type PieInsightFromCallTableQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/PieInsightQueriesItem.ts b/src/api/types/PieInsightQueriesItem.ts index d149ed8e..7b0a422f 100644 --- a/src/api/types/PieInsightQueriesItem.ts +++ b/src/api/types/PieInsightQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type PieInsightQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/QueryTool.ts b/src/api/types/QueryTool.ts index 90cb7a65..eef06d15 100644 --- a/src/api/types/QueryTool.ts +++ b/src/api/types/QueryTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface QueryTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.QueryToolMessagesItem[] | undefined; /** The knowledge bases to query */ diff --git a/src/api/types/RecordingConsentPlanStayOnLineVoice.ts b/src/api/types/RecordingConsentPlanStayOnLineVoice.ts index d59473fb..e58256d6 100644 --- a/src/api/types/RecordingConsentPlanStayOnLineVoice.ts +++ b/src/api/types/RecordingConsentPlanStayOnLineVoice.ts @@ -20,7 +20,6 @@ export type RecordingConsentPlanStayOnLineVoice = | Vapi.RecordingConsentPlanStayOnLineVoice.Wellsaid | Vapi.RecordingConsentPlanStayOnLineVoice.RimeAi | Vapi.RecordingConsentPlanStayOnLineVoice.SmallestAi - | Vapi.RecordingConsentPlanStayOnLineVoice.Tavus | Vapi.RecordingConsentPlanStayOnLineVoice.Vapi | Vapi.RecordingConsentPlanStayOnLineVoice.Sesame | Vapi.RecordingConsentPlanStayOnLineVoice.Inworld @@ -81,10 +80,6 @@ export namespace RecordingConsentPlanStayOnLineVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/RecordingConsentPlanVerbalVoice.ts b/src/api/types/RecordingConsentPlanVerbalVoice.ts index 491842b4..839701da 100644 --- a/src/api/types/RecordingConsentPlanVerbalVoice.ts +++ b/src/api/types/RecordingConsentPlanVerbalVoice.ts @@ -20,7 +20,6 @@ export type RecordingConsentPlanVerbalVoice = | Vapi.RecordingConsentPlanVerbalVoice.Wellsaid | Vapi.RecordingConsentPlanVerbalVoice.RimeAi | Vapi.RecordingConsentPlanVerbalVoice.SmallestAi - | Vapi.RecordingConsentPlanVerbalVoice.Tavus | Vapi.RecordingConsentPlanVerbalVoice.Vapi | Vapi.RecordingConsentPlanVerbalVoice.Sesame | Vapi.RecordingConsentPlanVerbalVoice.Inworld @@ -81,10 +80,6 @@ export namespace RecordingConsentPlanVerbalVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/Reson8Credential.ts b/src/api/types/Reson8Credential.ts new file mode 100644 index 00000000..511eaf18 --- /dev/null +++ b/src/api/types/Reson8Credential.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 Reson8Credential { + provider: Vapi.Reson8CredentialProvider; + /** 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 | undefined; +} diff --git a/src/api/types/Reson8CredentialProvider.ts b/src/api/types/Reson8CredentialProvider.ts new file mode 100644 index 00000000..397839cb --- /dev/null +++ b/src/api/types/Reson8CredentialProvider.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export const Reson8CredentialProvider = { + Reson8: "reson8", +} as const; +export type Reson8CredentialProvider = (typeof Reson8CredentialProvider)[keyof typeof Reson8CredentialProvider]; diff --git a/src/api/types/Reson8Transcriber.ts b/src/api/types/Reson8Transcriber.ts new file mode 100644 index 00000000..1df8a249 --- /dev/null +++ b/src/api/types/Reson8Transcriber.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 Reson8Transcriber { + /** The Reson8 speech-to-text endpoint to use. `turns` is Reson8's turn-detection endpoint. */ + model?: Vapi.Reson8TranscriberModel | undefined; + /** Language for transcription (e.g. `nl`), or a comma-separated candidate list such as `nl,en` which constrains auto-detection. When omitted, Reson8 auto-detects the language per utterance. Supported: de, en, es, fr, fy, it, nl, pl, pt, sv. */ + language?: string | undefined; + /** Domain-specific terms to boost recognition (brand names, product codes, jargon). Sent to Reson8 as the `phrases` parameter. Max 250 phrases. */ + keyterms?: string[] | undefined; + /** A stored Reson8 phrase collection (custom model) id, managed via the Reson8 API or console. */ + customModelId?: string | undefined; + /** Threshold (0-1) at which Reson8 emits an eager turn-end candidate. Provider default 0.5. */ + eagerTurnProbability?: number | undefined; + /** Threshold (0-1) at which Reson8 confirms the end of a turn. Provider default 0.92. */ + finalTurnProbability?: number | undefined; + /** How Reson8 renders filler words in transcripts. Provider default `natural`. */ + fillerMode?: Vapi.Reson8TranscriberFillerMode | undefined; + /** This is the plan for transcriber provider fallbacks in the event that the primary transcriber provider fails. */ + fallbackPlan?: Vapi.FallbackTranscriberPlan | undefined; +} diff --git a/src/api/types/Reson8TranscriberFillerMode.ts b/src/api/types/Reson8TranscriberFillerMode.ts new file mode 100644 index 00000000..ad1c1d92 --- /dev/null +++ b/src/api/types/Reson8TranscriberFillerMode.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +/** How Reson8 renders filler words in transcripts. Provider default `natural`. */ +export const Reson8TranscriberFillerMode = { + Clean: "clean", + Natural: "natural", + Verbatim: "verbatim", +} as const; +export type Reson8TranscriberFillerMode = + (typeof Reson8TranscriberFillerMode)[keyof typeof Reson8TranscriberFillerMode]; diff --git a/src/api/types/Reson8TranscriberModel.ts b/src/api/types/Reson8TranscriberModel.ts new file mode 100644 index 00000000..17de7756 --- /dev/null +++ b/src/api/types/Reson8TranscriberModel.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +/** The Reson8 speech-to-text endpoint to use. `turns` is Reson8's turn-detection endpoint. */ +export const Reson8TranscriberModel = { + Turns: "turns", +} as const; +export type Reson8TranscriberModel = (typeof Reson8TranscriberModel)[keyof typeof Reson8TranscriberModel]; diff --git a/src/api/types/SayAssistantHookAction.ts b/src/api/types/SayAssistantHookAction.ts deleted file mode 100644 index 279fcf99..00000000 --- a/src/api/types/SayAssistantHookAction.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type SayAssistantHookAction = unknown; diff --git a/src/api/types/SbcConfiguration.ts b/src/api/types/SbcConfiguration.ts deleted file mode 100644 index 70f83cef..00000000 --- a/src/api/types/SbcConfiguration.ts +++ /dev/null @@ -1,6 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -/** - * Routes bring-your-own SIP traffic through an on-premises session border controller instead of Vapi's managed controller. - */ -export type SbcConfiguration = unknown; diff --git a/src/api/types/ServerMessageEndOfCallReportEndedReason.ts b/src/api/types/ServerMessageEndOfCallReportEndedReason.ts index cb1ca5dd..4a331bcd 100644 --- a/src/api/types/ServerMessageEndOfCallReportEndedReason.ts +++ b/src/api/types/ServerMessageEndOfCallReportEndedReason.ts @@ -2,6 +2,13 @@ /** This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id. */ export const ServerMessageEndOfCallReportEndedReason = { + CallInProgressErrorVapifaultGuardrailEvaluationFailed: + "call.in-progress.error-vapifault-guardrail-evaluation-failed", + CallInProgressErrorVapifaultGuardrailPlaybackTimeout: "call.in-progress.error-vapifault-guardrail-playback-timeout", + CallInProgressGuardrailBlocked: "call.in-progress.guardrail-blocked", + CallInProgressErrorVapifaultCallStartFailed: "call.in-progress.error-vapifault-call-start-failed", + CallInProgressErrorVapifaultAssistantHandoffStartFailed: + "call.in-progress.error-vapifault-assistant-handoff-start-failed", CallStartErrorNeitherAssistantNorServerSet: "call-start-error-neither-assistant-nor-server-set", AssistantRequestFailed: "assistant-request-failed", AssistantRequestReturnedError: "assistant-request-returned-error", @@ -164,6 +171,19 @@ export const ServerMessageEndOfCallReportEndedReason = { CallInProgressErrorVapifaultXaiTranscriberServerError: "call.in-progress.error-vapifault-xai-transcriber-server-error", CallInProgressErrorVapifaultXaiTranscriberFailed: "call.in-progress.error-vapifault-xai-transcriber-failed", + PipelineErrorReson8TranscriberAuthFailed: "pipeline-error-reson8-transcriber-auth-failed", + PipelineErrorReson8TranscriberRateLimited: "pipeline-error-reson8-transcriber-rate-limited", + PipelineErrorReson8TranscriberInvalidConfig: "pipeline-error-reson8-transcriber-invalid-config", + PipelineErrorReson8TranscriberClosed: "pipeline-error-reson8-transcriber-closed", + PipelineErrorReson8TranscriberFailed: "pipeline-error-reson8-transcriber-failed", + CallInProgressErrorVapifaultReson8TranscriberAuthFailed: + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + CallInProgressErrorVapifaultReson8TranscriberRateLimited: + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + CallInProgressErrorVapifaultReson8TranscriberInvalidConfig: + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + CallInProgressErrorVapifaultReson8TranscriberClosed: "call.in-progress.error-vapifault-reson8-transcriber-closed", + CallInProgressErrorVapifaultReson8TranscriberFailed: "call.in-progress.error-vapifault-reson8-transcriber-failed", PipelineErrorCartesiaTranscriberFailed: "pipeline-error-cartesia-transcriber-failed", CallInProgressErrorVapifaultCartesiaTranscriberFailed: "call.in-progress.error-vapifault-cartesia-transcriber-failed", @@ -625,6 +645,8 @@ export const ServerMessageEndOfCallReportEndedReason = { CallInProgressErrorVapifaultCartesiaRequestedPayment: "call.in-progress.error-vapifault-cartesia-requested-payment", CallInProgressErrorProviderfaultCartesia500ServerError: "call.in-progress.error-providerfault-cartesia-500-server-error", + CallInProgressErrorProviderfaultCartesia502ServerError: + "call.in-progress.error-providerfault-cartesia-502-server-error", CallInProgressErrorProviderfaultCartesia503ServerError: "call.in-progress.error-providerfault-cartesia-503-server-error", CallInProgressErrorProviderfaultCartesia522ServerError: @@ -658,6 +680,7 @@ export const ServerMessageEndOfCallReportEndedReason = { PipelineErrorElevenLabsMaxCharacterLimitExceeded: "pipeline-error-eleven-labs-max-character-limit-exceeded", PipelineErrorElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification: "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + PipelineErrorElevenLabsUnsupportedModel: "pipeline-error-eleven-labs-unsupported-model", PipelineErrorElevenLabs500ServerError: "pipeline-error-eleven-labs-500-server-error", PipelineErrorElevenLabs503ServerError: "pipeline-error-eleven-labs-503-server-error", CallInProgressErrorVapifaultElevenLabsVoiceNotFound: "call.in-progress.error-vapifault-eleven-labs-voice-not-found", @@ -697,6 +720,8 @@ export const ServerMessageEndOfCallReportEndedReason = { "call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded", CallInProgressErrorVapifaultElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification: "call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + CallInProgressErrorVapifaultElevenLabsUnsupportedModel: + "call.in-progress.error-vapifault-eleven-labs-unsupported-model", CallInProgressErrorProviderfaultElevenLabsSystemBusyAndRequestedUpgrade: "call.in-progress.error-providerfault-eleven-labs-system-busy-and-requested-upgrade", CallInProgressErrorProviderfaultElevenLabsBlockedConcurrentRequestsAndRequestedUpgrade: diff --git a/src/api/types/ServerMessageResponseAssistantRequest.ts b/src/api/types/ServerMessageResponseAssistantRequest.ts index 4cc2ae1a..5c8b3805 100644 --- a/src/api/types/ServerMessageResponseAssistantRequest.ts +++ b/src/api/types/ServerMessageResponseAssistantRequest.ts @@ -26,7 +26,7 @@ export interface ServerMessageResponseAssistantRequest { * - Squad, use `squad` * - Workflow, use `workflow` */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** These are the overrides for the `assistant` or `assistantId`'s settings and template variables. */ assistantOverrides?: Vapi.AssistantOverrides | undefined; /** diff --git a/src/api/types/ServerMessageStatusUpdateEndedReason.ts b/src/api/types/ServerMessageStatusUpdateEndedReason.ts index d250defb..c2603f5e 100644 --- a/src/api/types/ServerMessageStatusUpdateEndedReason.ts +++ b/src/api/types/ServerMessageStatusUpdateEndedReason.ts @@ -2,6 +2,13 @@ /** This is the reason the call ended. This is only sent if the status is "ended". */ export const ServerMessageStatusUpdateEndedReason = { + CallInProgressErrorVapifaultGuardrailEvaluationFailed: + "call.in-progress.error-vapifault-guardrail-evaluation-failed", + CallInProgressErrorVapifaultGuardrailPlaybackTimeout: "call.in-progress.error-vapifault-guardrail-playback-timeout", + CallInProgressGuardrailBlocked: "call.in-progress.guardrail-blocked", + CallInProgressErrorVapifaultCallStartFailed: "call.in-progress.error-vapifault-call-start-failed", + CallInProgressErrorVapifaultAssistantHandoffStartFailed: + "call.in-progress.error-vapifault-assistant-handoff-start-failed", CallStartErrorNeitherAssistantNorServerSet: "call-start-error-neither-assistant-nor-server-set", AssistantRequestFailed: "assistant-request-failed", AssistantRequestReturnedError: "assistant-request-returned-error", @@ -164,6 +171,19 @@ export const ServerMessageStatusUpdateEndedReason = { CallInProgressErrorVapifaultXaiTranscriberServerError: "call.in-progress.error-vapifault-xai-transcriber-server-error", CallInProgressErrorVapifaultXaiTranscriberFailed: "call.in-progress.error-vapifault-xai-transcriber-failed", + PipelineErrorReson8TranscriberAuthFailed: "pipeline-error-reson8-transcriber-auth-failed", + PipelineErrorReson8TranscriberRateLimited: "pipeline-error-reson8-transcriber-rate-limited", + PipelineErrorReson8TranscriberInvalidConfig: "pipeline-error-reson8-transcriber-invalid-config", + PipelineErrorReson8TranscriberClosed: "pipeline-error-reson8-transcriber-closed", + PipelineErrorReson8TranscriberFailed: "pipeline-error-reson8-transcriber-failed", + CallInProgressErrorVapifaultReson8TranscriberAuthFailed: + "call.in-progress.error-vapifault-reson8-transcriber-auth-failed", + CallInProgressErrorVapifaultReson8TranscriberRateLimited: + "call.in-progress.error-vapifault-reson8-transcriber-rate-limited", + CallInProgressErrorVapifaultReson8TranscriberInvalidConfig: + "call.in-progress.error-vapifault-reson8-transcriber-invalid-config", + CallInProgressErrorVapifaultReson8TranscriberClosed: "call.in-progress.error-vapifault-reson8-transcriber-closed", + CallInProgressErrorVapifaultReson8TranscriberFailed: "call.in-progress.error-vapifault-reson8-transcriber-failed", PipelineErrorCartesiaTranscriberFailed: "pipeline-error-cartesia-transcriber-failed", CallInProgressErrorVapifaultCartesiaTranscriberFailed: "call.in-progress.error-vapifault-cartesia-transcriber-failed", @@ -625,6 +645,8 @@ export const ServerMessageStatusUpdateEndedReason = { CallInProgressErrorVapifaultCartesiaRequestedPayment: "call.in-progress.error-vapifault-cartesia-requested-payment", CallInProgressErrorProviderfaultCartesia500ServerError: "call.in-progress.error-providerfault-cartesia-500-server-error", + CallInProgressErrorProviderfaultCartesia502ServerError: + "call.in-progress.error-providerfault-cartesia-502-server-error", CallInProgressErrorProviderfaultCartesia503ServerError: "call.in-progress.error-providerfault-cartesia-503-server-error", CallInProgressErrorProviderfaultCartesia522ServerError: @@ -658,6 +680,7 @@ export const ServerMessageStatusUpdateEndedReason = { PipelineErrorElevenLabsMaxCharacterLimitExceeded: "pipeline-error-eleven-labs-max-character-limit-exceeded", PipelineErrorElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification: "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + PipelineErrorElevenLabsUnsupportedModel: "pipeline-error-eleven-labs-unsupported-model", PipelineErrorElevenLabs500ServerError: "pipeline-error-eleven-labs-500-server-error", PipelineErrorElevenLabs503ServerError: "pipeline-error-eleven-labs-503-server-error", CallInProgressErrorVapifaultElevenLabsVoiceNotFound: "call.in-progress.error-vapifault-eleven-labs-voice-not-found", @@ -697,6 +720,8 @@ export const ServerMessageStatusUpdateEndedReason = { "call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded", CallInProgressErrorVapifaultElevenLabsBlockedVoicePotentiallyAgainstTermsOfServiceAndAwaitingVerification: "call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + CallInProgressErrorVapifaultElevenLabsUnsupportedModel: + "call.in-progress.error-vapifault-eleven-labs-unsupported-model", CallInProgressErrorProviderfaultElevenLabsSystemBusyAndRequestedUpgrade: "call.in-progress.error-providerfault-eleven-labs-system-busy-and-requested-upgrade", CallInProgressErrorProviderfaultElevenLabsBlockedConcurrentRequestsAndRequestedUpgrade: diff --git a/src/api/types/ServiceUnavailableErrorBody.ts b/src/api/types/ServiceUnavailableErrorBody.ts new file mode 100644 index 00000000..db64f108 --- /dev/null +++ b/src/api/types/ServiceUnavailableErrorBody.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 ServiceUnavailableErrorBody = Vapi.SimulationOnboardingErrorDto | Vapi.ServiceUnavailableErrorBodyError; diff --git a/src/api/types/ServiceUnavailableErrorBodyError.ts b/src/api/types/ServiceUnavailableErrorBodyError.ts new file mode 100644 index 00000000..821b5e25 --- /dev/null +++ b/src/api/types/ServiceUnavailableErrorBodyError.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface ServiceUnavailableErrorBodyError { + statusCode: number; + message: string; + error: string; +} diff --git a/src/api/types/Session.ts b/src/api/types/Session.ts index 268b3cd3..00ae93b8 100644 --- a/src/api/types/Session.ts +++ b/src/api/types/Session.ts @@ -27,7 +27,7 @@ export interface Session { * This is the assistant configuration for this session. Use this when creating a new assistant configuration. * If assistantId is provided, this will be ignored. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** * These are the overrides for the assistant configuration. * Use this to provide variable values and other overrides when using assistantId. diff --git a/src/api/types/SimulationOnboardingCoverageGapDto.ts b/src/api/types/SimulationOnboardingCoverageGapDto.ts new file mode 100644 index 00000000..5a94c98e --- /dev/null +++ b/src/api/types/SimulationOnboardingCoverageGapDto.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 SimulationOnboardingCoverageGapDto { + /** Requirement the gap is for, e.g. `R4`. */ + requirementId: string; + /** Why no simulation covers it. `failed` and `budget` gaps are regenerated by an edit with `retryFailed`. */ + reason: Vapi.SimulationOnboardingCoverageGapDtoReason; + /** A short explanation for the user. */ + detail?: string | undefined; +} diff --git a/src/api/types/SimulationOnboardingCoverageGapDtoReason.ts b/src/api/types/SimulationOnboardingCoverageGapDtoReason.ts new file mode 100644 index 00000000..a18d0313 --- /dev/null +++ b/src/api/types/SimulationOnboardingCoverageGapDtoReason.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Why no simulation covers it. `failed` and `budget` gaps are regenerated by an edit with `retryFailed`. */ +export const SimulationOnboardingCoverageGapDtoReason = { + NotTestable: "not-testable", + Unmapped: "unmapped", + Failed: "failed", + Budget: "budget", +} as const; +export type SimulationOnboardingCoverageGapDtoReason = + (typeof SimulationOnboardingCoverageGapDtoReason)[keyof typeof SimulationOnboardingCoverageGapDtoReason]; diff --git a/src/api/types/SimulationOnboardingErrorDto.ts b/src/api/types/SimulationOnboardingErrorDto.ts new file mode 100644 index 00000000..456d4def --- /dev/null +++ b/src/api/types/SimulationOnboardingErrorDto.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationOnboardingErrorDto { + /** Which refusal this is. Retry `SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS` with the same key and `SIMULATION_ONBOARDING_CONCURRENCY_LIMITED` or `SIMULATION_ONBOARDING_QUOTA_UNAVAILABLE` after `retryAfterSeconds`, send a new key for `SIMULATION_ONBOARDING_IDEMPOTENCY_KEY_REUSED`, and stop for `SIMULATION_ONBOARDING_QUOTA_EXCEEDED`. */ + code: Vapi.SimulationOnboardingErrorDtoCode; + /** What happened, written for the user. */ + message: string; + /** Seconds to wait before retrying, the same value as the `Retry-After` header. For a daily limit, the seconds until 00:00 UTC. */ + retryAfterSeconds?: number | undefined; + /** The daily limit that was reached, on a daily-limit refusal only. */ + limit?: number | undefined; +} diff --git a/src/api/types/SimulationOnboardingErrorDtoCode.ts b/src/api/types/SimulationOnboardingErrorDtoCode.ts new file mode 100644 index 00000000..32746417 --- /dev/null +++ b/src/api/types/SimulationOnboardingErrorDtoCode.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Which refusal this is. Retry `SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS` with the same key and `SIMULATION_ONBOARDING_CONCURRENCY_LIMITED` or `SIMULATION_ONBOARDING_QUOTA_UNAVAILABLE` after `retryAfterSeconds`, send a new key for `SIMULATION_ONBOARDING_IDEMPOTENCY_KEY_REUSED`, and stop for `SIMULATION_ONBOARDING_QUOTA_EXCEEDED`. */ +export const SimulationOnboardingErrorDtoCode = { + SimulationOnboardingGenerationInProgress: "SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS", + SimulationOnboardingIdempotencyKeyReused: "SIMULATION_ONBOARDING_IDEMPOTENCY_KEY_REUSED", + SimulationOnboardingConcurrencyLimited: "SIMULATION_ONBOARDING_CONCURRENCY_LIMITED", + SimulationOnboardingQuotaExceeded: "SIMULATION_ONBOARDING_QUOTA_EXCEEDED", + SimulationOnboardingQuotaUnavailable: "SIMULATION_ONBOARDING_QUOTA_UNAVAILABLE", +} as const; +export type SimulationOnboardingErrorDtoCode = + (typeof SimulationOnboardingErrorDtoCode)[keyof typeof SimulationOnboardingErrorDtoCode]; diff --git a/src/api/types/SimulationOnboardingOpenQuestionDto.ts b/src/api/types/SimulationOnboardingOpenQuestionDto.ts new file mode 100644 index 00000000..70d0a452 --- /dev/null +++ b/src/api/types/SimulationOnboardingOpenQuestionDto.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface SimulationOnboardingOpenQuestionDto { + /** Question id within its draft, e.g. `Q1`. */ + id: string; + /** A question about expected assistant behavior that needs clarification. */ + text: string; + /** Which requirement the answer changes, and how. */ + why: string; +} diff --git a/src/api/types/SimulationOnboardingRequirementDto.ts b/src/api/types/SimulationOnboardingRequirementDto.ts new file mode 100644 index 00000000..39467ba8 --- /dev/null +++ b/src/api/types/SimulationOnboardingRequirementDto.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationOnboardingRequirementDto { + /** Stable requirement id, e.g. `R3`. */ + id: string; + /** One observable behaviour the assistant must get right. */ + text: string; + /** Indicates an assumption, a requirement that needs a voice simulation, or a requirement that cannot be tested. */ + tag?: Vapi.SimulationOnboardingRequirementDtoTag | undefined; + /** What was assumed, why only a voice run can check it, or why it cannot be tested. */ + note?: string | undefined; +} diff --git a/src/api/types/SimulationOnboardingRequirementDtoTag.ts b/src/api/types/SimulationOnboardingRequirementDtoTag.ts new file mode 100644 index 00000000..b2f4a5af --- /dev/null +++ b/src/api/types/SimulationOnboardingRequirementDtoTag.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Indicates an assumption, a requirement that needs a voice simulation, or a requirement that cannot be tested. */ +export const SimulationOnboardingRequirementDtoTag = { + Assumption: "assumption", + NotTestable: "not-testable", + VoiceOnly: "voice-only", +} as const; +export type SimulationOnboardingRequirementDtoTag = + (typeof SimulationOnboardingRequirementDtoTag)[keyof typeof SimulationOnboardingRequirementDtoTag]; diff --git a/src/api/types/SimulationOnboardingRequirementsDraftDto.ts b/src/api/types/SimulationOnboardingRequirementsDraftDto.ts new file mode 100644 index 00000000..db242a38 --- /dev/null +++ b/src/api/types/SimulationOnboardingRequirementsDraftDto.ts @@ -0,0 +1,16 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationOnboardingRequirementsDraftDto { + /** Draft version, 1 for a first draft. */ + version: number; + /** What changed since the previous draft. */ + changeNote?: string | undefined; + /** What the draft was based on, e.g. the prompt and tools. */ + sources: string[]; + /** Draft test requirements describing the expected assistant behavior. Review and refine these before generating a simulation suite. */ + requirements: Vapi.SimulationOnboardingRequirementDto[]; + /** Questions about ambiguous or missing assistant behavior to resolve before generating a simulation suite. */ + openQuestions: Vapi.SimulationOnboardingOpenQuestionDto[]; +} diff --git a/src/api/types/SimulationOnboardingSuiteCoverageDto.ts b/src/api/types/SimulationOnboardingSuiteCoverageDto.ts new file mode 100644 index 00000000..8334994d --- /dev/null +++ b/src/api/types/SimulationOnboardingSuiteCoverageDto.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationOnboardingSuiteCoverageDto { + /** Requirements at least one simulation covers. */ + covered: number; + /** Requirements in the agreed draft. */ + total: number; + /** Requirements no simulation covers, and why. */ + gaps: Vapi.SimulationOnboardingCoverageGapDto[]; + /** Planned scenarios an edit with `retryFailed` would regenerate. */ + retryable: number; +} diff --git a/src/api/types/SimulationOnboardingSuiteDocsDto.ts b/src/api/types/SimulationOnboardingSuiteDocsDto.ts new file mode 100644 index 00000000..cc6bec31 --- /dev/null +++ b/src/api/types/SimulationOnboardingSuiteDocsDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface SimulationOnboardingSuiteDocsDto { + /** Link to testing best practices. */ + bestPractices: string; + /** Link explaining why tools are mocked by default. */ + toolMocks: string; +} diff --git a/src/api/types/SimulationOnboardingSuiteEditDto.ts b/src/api/types/SimulationOnboardingSuiteEditDto.ts new file mode 100644 index 00000000..c7f1a1a1 --- /dev/null +++ b/src/api/types/SimulationOnboardingSuiteEditDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface SimulationOnboardingSuiteEditDto { + /** Simulation in the suite whose scenario is rewritten. */ + simulationId: string; + /** Natural-language instructions for revising this simulation's scenario, such as "Have the caller ask for a refund after 30 days." */ + instruction: string; +} diff --git a/src/api/types/SimulationOnboardingSuiteRefDto.ts b/src/api/types/SimulationOnboardingSuiteRefDto.ts new file mode 100644 index 00000000..5231fd41 --- /dev/null +++ b/src/api/types/SimulationOnboardingSuiteRefDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface SimulationOnboardingSuiteRefDto { + /** Suite id; pass it to edit or run the suite. */ + id: string; + /** Suite name. */ + name: string; +} diff --git a/src/api/types/SimulationOnboardingSuiteSimulationDto.ts b/src/api/types/SimulationOnboardingSuiteSimulationDto.ts new file mode 100644 index 00000000..22f3beab --- /dev/null +++ b/src/api/types/SimulationOnboardingSuiteSimulationDto.ts @@ -0,0 +1,18 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface SimulationOnboardingSuiteSimulationDto { + /** Simulation id; pass it back to edit or remove the simulation. */ + id: string; + /** Scenario the simulation runs. */ + scenarioId: string; + /** Scenario name. */ + name: string; + /** Name of the simulated caller's personality. */ + personalityName?: string | undefined; + /** Each success criterion, as the yes/no question it is judged by. */ + successCriteria: string[]; + /** Requirement ids this simulation covers, e.g. `R3`. */ + requirementIds: string[]; + /** Tools the scenario mocks. */ + mockedTools: string[]; +} diff --git a/src/api/types/SimulationOnboardingSuiteViewDto.ts b/src/api/types/SimulationOnboardingSuiteViewDto.ts new file mode 100644 index 00000000..f75a1fcb --- /dev/null +++ b/src/api/types/SimulationOnboardingSuiteViewDto.ts @@ -0,0 +1,24 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationOnboardingSuiteViewDto { + /** The generated simulation suite id and name. */ + suite: Vapi.SimulationOnboardingSuiteRefDto; + /** Assistant the suite is assigned to. */ + assistantId: string; + /** The suite's simulations, in order. */ + simulations: Vapi.SimulationOnboardingSuiteSimulationDto[]; + /** Counts of covered and total requirements, uncovered requirements, and scenarios available to retry. */ + coverage: Vapi.SimulationOnboardingSuiteCoverageDto; + /** The test requirements used to generate the suite. Match their ids to `coverage.gaps` to identify uncovered requirements. */ + requirements: Vapi.SimulationOnboardingRequirementDto[]; + /** Links to simulation testing best practices and tool mocking documentation. */ + docs: Vapi.SimulationOnboardingSuiteDocsDto; + /** True when the request matched one already applied (same `idempotencyKey` or `patchKey`) and nothing changed. */ + reused: boolean; + /** Simulations an edit asked to rewrite that were not rewritten, for example because the rewrite did not generate in time. Retry them with a new `patchKey`. */ + failedEditSimulationIds?: string[] | undefined; + /** Tool paths the suite's simulations do not exercise as configured, such as a tool mocked although it runs natively. Omitted when there are none. */ + toolGaps?: Vapi.SimulationOnboardingToolGapDto[] | undefined; +} diff --git a/src/api/types/SimulationOnboardingToolGapDto.ts b/src/api/types/SimulationOnboardingToolGapDto.ts new file mode 100644 index 00000000..122040ff --- /dev/null +++ b/src/api/types/SimulationOnboardingToolGapDto.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationOnboardingToolGapDto { + /** Function name of the tool, e.g. `handoff_to_group_1` or `transferCall`. */ + toolName: string; + /** Assistant the tool belongs to, when it is a handoff destination's tool. Unset for the assistant's own tools. */ + assistantName?: string | undefined; + /** Why the path is not exercised: a reason the simulations mock the tool, or why a native path is never reached. New reasons may be added. */ + reason: Vapi.SimulationOnboardingToolGapDtoReason; + /** Static destinations the simulations do not reach through this tool. */ + destinationNames?: string[] | undefined; +} diff --git a/src/api/types/SimulationOnboardingToolGapDtoReason.ts b/src/api/types/SimulationOnboardingToolGapDtoReason.ts new file mode 100644 index 00000000..4ede867c --- /dev/null +++ b/src/api/types/SimulationOnboardingToolGapDtoReason.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Why the path is not exercised: a reason the simulations mock the tool, or why a native path is never reached. New reasons may be added. */ +export const SimulationOnboardingToolGapDtoReason = { + DynamicHandoff: "dynamic-handoff", + DestinationNotPlain: "destination-not-plain", + DestinationUnresolved: "destination-unresolved", + DestinationTruncated: "destination-truncated", + TransferExternal: "transfer-external", + DestinationNameUnscoped: "destination-name-unscoped", + NativeToolShadowed: "native-tool-shadowed", +} as const; +export type SimulationOnboardingToolGapDtoReason = + (typeof SimulationOnboardingToolGapDtoReason)[keyof typeof SimulationOnboardingToolGapDtoReason]; diff --git a/src/api/types/SimulationRun.ts b/src/api/types/SimulationRun.ts index b9dc9c96..3f40a968 100644 --- a/src/api/types/SimulationRun.ts +++ b/src/api/types/SimulationRun.ts @@ -23,6 +23,8 @@ export interface SimulationRun { updatedAt: string; /** Aggregate counts of the run's items by status. */ itemCounts?: Vapi.SimulationRunItemCounts | undefined; + /** Generate directly attached target structured outputs. Default false. Enabled extraction may incur additional model charges. */ + includeTargetStructuredOutputs?: boolean | undefined; /** The simulations and suites included in the run. */ simulations: Vapi.SimulationRunSimulationsItem[]; /** The assistant or squad the run was tested against. */ diff --git a/src/api/types/SimulationRunConfiguration.ts b/src/api/types/SimulationRunConfiguration.ts index 9e29b50a..6aee8ac8 100644 --- a/src/api/types/SimulationRunConfiguration.ts +++ b/src/api/types/SimulationRunConfiguration.ts @@ -3,6 +3,8 @@ import type * as Vapi from "../index.js"; export interface SimulationRunConfiguration { + /** Generate directly attached target structured outputs. Default false. Enabled extraction may incur additional model charges. */ + includeTargetStructuredOutputs?: boolean | undefined; /** Transport configuration for the simulation run */ transport?: Vapi.SimulationRunTransportConfiguration | undefined; } diff --git a/src/api/types/SimulationRunItemResults.ts b/src/api/types/SimulationRunItemResults.ts index ab6deeb9..f68b5c0d 100644 --- a/src/api/types/SimulationRunItemResults.ts +++ b/src/api/types/SimulationRunItemResults.ts @@ -3,6 +3,12 @@ import type * as Vapi from "../index.js"; export interface SimulationRunItemResults { + /** Retention-permitted target extraction values, present only when enabled. */ + structuredOutputs?: Record | undefined; + /** Condition-gated outputs or audio outputs unsupported by chat. */ + skippedStructuredOutputs?: Record | undefined; + /** Sanitized diagnostic; optional target extraction never changes pass/fail. */ + structuredOutputError?: string | undefined; /** This is the list of results from structured output evaluations. */ evaluations: Vapi.StructuredOutputEvaluationResult[]; /** This indicates whether all required, non-skipped structured output evaluations and latency expectations passed. */ diff --git a/src/api/types/SimulationRunItemResultsSkippedStructuredOutputsValue.ts b/src/api/types/SimulationRunItemResultsSkippedStructuredOutputsValue.ts new file mode 100644 index 00000000..0f06da2f --- /dev/null +++ b/src/api/types/SimulationRunItemResultsSkippedStructuredOutputsValue.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationRunItemResultsSkippedStructuredOutputsValue { + name: string; + unmetCondition?: Record | undefined; + reason?: Vapi.SimulationRunItemResultsSkippedStructuredOutputsValueReason | undefined; +} diff --git a/src/api/types/SimulationRunItemResultsSkippedStructuredOutputsValueReason.ts b/src/api/types/SimulationRunItemResultsSkippedStructuredOutputsValueReason.ts new file mode 100644 index 00000000..e6531cd5 --- /dev/null +++ b/src/api/types/SimulationRunItemResultsSkippedStructuredOutputsValueReason.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const SimulationRunItemResultsSkippedStructuredOutputsValueReason = { + AudioNotSupported: "audio-not-supported", +} as const; +export type SimulationRunItemResultsSkippedStructuredOutputsValueReason = + (typeof SimulationRunItemResultsSkippedStructuredOutputsValueReason)[keyof typeof SimulationRunItemResultsSkippedStructuredOutputsValueReason]; diff --git a/src/api/types/SimulationRunItemResultsStructuredOutputsValue.ts b/src/api/types/SimulationRunItemResultsStructuredOutputsValue.ts new file mode 100644 index 00000000..78c2af34 --- /dev/null +++ b/src/api/types/SimulationRunItemResultsStructuredOutputsValue.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface SimulationRunItemResultsStructuredOutputsValue { + name: string; + result: unknown | null; +} diff --git a/src/api/types/SimulationRunItemsPaginatedResponse.ts b/src/api/types/SimulationRunItemsPaginatedResponse.ts new file mode 100644 index 00000000..5255a937 --- /dev/null +++ b/src/api/types/SimulationRunItemsPaginatedResponse.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationRunItemsPaginatedResponse { + results: Vapi.SimulationRunItem[]; + metadata: Vapi.PaginationMeta; +} diff --git a/src/api/types/SimulationRunListItem.ts b/src/api/types/SimulationRunListItem.ts index a65661c7..5cb4e996 100644 --- a/src/api/types/SimulationRunListItem.ts +++ b/src/api/types/SimulationRunListItem.ts @@ -23,6 +23,8 @@ export interface SimulationRunListItem { updatedAt: string; /** Aggregate counts of run items by status */ itemCounts?: Vapi.SimulationRunItemCounts | undefined; + /** Generate directly attached target structured outputs. Default false. Enabled extraction may incur additional model charges. */ + includeTargetStructuredOutputs?: boolean | undefined; /** Array of simulations and/or suites to run */ simulations: Vapi.SimulationRunListItemSimulationsItem[]; /** Target to test against */ diff --git a/src/api/types/SimulationRunTargetAssistant.ts b/src/api/types/SimulationRunTargetAssistant.ts index fd034dbc..dbc44195 100644 --- a/src/api/types/SimulationRunTargetAssistant.ts +++ b/src/api/types/SimulationRunTargetAssistant.ts @@ -6,5 +6,5 @@ export interface SimulationRunTargetAssistant { /** ID of an existing assistant to test against. Cannot be combined with inline assistant. */ assistantId?: string | undefined; /** Inline assistant configuration to test against. Cannot be combined with assistantId. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; } diff --git a/src/api/types/SimulationSuitesPaginatedResponse.ts b/src/api/types/SimulationSuitesPaginatedResponse.ts new file mode 100644 index 00000000..f5056fc4 --- /dev/null +++ b/src/api/types/SimulationSuitesPaginatedResponse.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface SimulationSuitesPaginatedResponse { + results: Vapi.SimulationSuite[]; + metadata: Vapi.PaginationMeta; +} diff --git a/src/api/types/SipRequestTool.ts b/src/api/types/SipRequestTool.ts index 2f53dbcc..4f37adb5 100644 --- a/src/api/types/SipRequestTool.ts +++ b/src/api/types/SipRequestTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface SipRequestTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.SipRequestToolMessagesItem[] | undefined; /** The SIP method to send. */ diff --git a/src/api/types/SlackSendMessageTool.ts b/src/api/types/SlackSendMessageTool.ts index a899e3e0..9268d8f9 100644 --- a/src/api/types/SlackSendMessageTool.ts +++ b/src/api/types/SlackSendMessageTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface SlackSendMessageTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.SlackSendMessageToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/SmsTool.ts b/src/api/types/SmsTool.ts index cb91c0aa..fa82e81f 100644 --- a/src/api/types/SmsTool.ts +++ b/src/api/types/SmsTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface SmsTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.SmsToolMessagesItem[] | undefined; /** This is the unique identifier for the tool. */ diff --git a/src/api/types/SonioxTranscriber.ts b/src/api/types/SonioxTranscriber.ts index a1f028a0..285bfaaa 100644 --- a/src/api/types/SonioxTranscriber.ts +++ b/src/api/types/SonioxTranscriber.ts @@ -8,6 +8,8 @@ import type * as Vapi from "../index.js"; export interface SonioxTranscriber { /** The Soniox model to use for transcription. */ model?: Vapi.SonioxTranscriberModel | undefined; + /** Sends the assistant's speech to Soniox as context, which improves caller transcription and filters out echo. Only supported on stt-rt-v6. Defaults to on; set to false to disable. */ + agentTextInputEnabled?: boolean | undefined; /** Single language for transcription as an ISO 639-1 code (e.g., `en`, `es`). For multi-language hints or to enable Soniox auto-detect, use `languages` instead — when `languages` is set (including to an empty array), this field is ignored when building the Soniox request. Defaults to `en` if neither this nor `languages` is set. */ language?: Vapi.SonioxTranscriberLanguage | undefined; /** Language hints sent to Soniox as `language_hints`. Provide `[lang1, lang2, ...]` (ISO 639-1 codes) to bias recognition toward specific languages, or provide an explicit empty array `[]` to enable Soniox auto-detect across all 60+ supported languages. When set (including the empty array), this field takes precedence over the singular `language` field. When omitted, falls back to the singular `language` (which defaults to `en` if also unset). Best accuracy is achieved with a single language. */ @@ -16,9 +18,9 @@ export interface SonioxTranscriber { languageHintsStrict?: boolean | undefined; /** Maximum delay in milliseconds between when the speaker stops and when the endpoint is detected. Lower values mean faster turn-taking but more false endpoints. Range: 500-3000. Default: 500. */ maxEndpointDelayMs?: number | undefined; - /** How likely Soniox is to emit an endpoint (end the caller turn). Higher values make endpoints more likely for faster turn-taking; negative values make them less likely, which helps when callers pause mid-sentence (e.g. reading numbers group by group). Range: -1.0 to 1.0. Default: 0.3 (the platform low-latency voice profile; Soniox's own default is 0.0). Supported by stt-rt-v5; omitted from the Soniox request on explicit stt-rt-v4. Soniox recommends tuning endpointLatencyAdjustmentLevel first, and advises against negative sensitivity while the level is above 0 (the settings work against each other). */ + /** How likely Soniox is to emit an endpoint (end the caller turn). Higher values make endpoints more likely for faster turn-taking; negative values make them less likely, which helps when callers pause mid-sentence (e.g. reading numbers group by group). Range: -1.0 to 1.0. Default: 0.3 (the platform low-latency voice profile; Soniox's own default is 0.0). Supported by stt-rt-v5 and stt-rt-v6; omitted from the Soniox request on explicit stt-rt-v4. Soniox recommends tuning endpointLatencyAdjustmentLevel first, and advises against negative sensitivity while the level is above 0 (the settings work against each other). */ endpointSensitivity?: number | undefined; - /** How aggressively Soniox reduces endpoint latency. 0 is Soniox's default semantic endpointing; 3 is the most aggressive. Higher levels return endpoints sooner but may split speech into more segments and slightly reduce accuracy. Integer. Range: 0-3. Default: 2 (the platform low-latency voice profile; Soniox's own default is 0). Supported by stt-rt-v5; omitted from the Soniox request on explicit stt-rt-v4. */ + /** How aggressively Soniox reduces endpoint latency. 0 is Soniox's default semantic endpointing; 3 is the most aggressive. Higher levels return endpoints sooner but may split speech into more segments and slightly reduce accuracy. Integer. Range: 0-3. Default: 2 (the platform low-latency voice profile; Soniox's own default is 0). Supported by stt-rt-v5 and stt-rt-v6; omitted from the Soniox request on explicit stt-rt-v4. */ endpointLatencyAdjustmentLevel?: number | undefined; /** Custom vocabulary terms to boost recognition accuracy. Useful for brand names, product names, and domain-specific terminology. Maps to Soniox context.terms. */ customVocabulary?: string[] | undefined; diff --git a/src/api/types/SonioxTranscriberModel.ts b/src/api/types/SonioxTranscriberModel.ts index cff3d9f6..c1ac7712 100644 --- a/src/api/types/SonioxTranscriberModel.ts +++ b/src/api/types/SonioxTranscriberModel.ts @@ -4,5 +4,6 @@ export const SonioxTranscriberModel = { SttRtV4: "stt-rt-v4", SttRtV5: "stt-rt-v5", + SttRtV6: "stt-rt-v6", } as const; export type SonioxTranscriberModel = (typeof SonioxTranscriberModel)[keyof typeof SonioxTranscriberModel]; diff --git a/src/api/types/SquadMemberDto.ts b/src/api/types/SquadMemberDto.ts index 8caacff7..ded7021d 100644 --- a/src/api/types/SquadMemberDto.ts +++ b/src/api/types/SquadMemberDto.ts @@ -17,7 +17,7 @@ export interface SquadMemberDto { /** This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead. */ assistantId?: (string | null) | undefined; /** This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** This can be used to override the assistant's settings and provide values for it's template variables. */ assistantOverrides?: Vapi.AssistantOverrides | undefined; } diff --git a/src/api/types/StructuredOutput.ts b/src/api/types/StructuredOutput.ts index 0b29d45e..dcdff7f8 100644 --- a/src/api/types/StructuredOutput.ts +++ b/src/api/types/StructuredOutput.ts @@ -39,7 +39,8 @@ export interface StructuredOutput { * This is the model that will be used to extract the structured output. * * To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. - * Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. + * For text extraction, you must reference 'transcript', 'messages', or 'messagesWithConfidence' with the `{{}}` syntax to access the conversation history. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results but omits caller transcription-confidence fields. Text extraction can use `{{messagesWithConfidence}}` when the output needs the original message history with transcription confidence. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. * Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. * i.e.: * `{{structuredOutput}}` diff --git a/src/api/types/StructuredOutputCostBreakdown.ts b/src/api/types/StructuredOutputCostBreakdown.ts index 60fcb9ca..f70e5776 100644 --- a/src/api/types/StructuredOutputCostBreakdown.ts +++ b/src/api/types/StructuredOutputCostBreakdown.ts @@ -13,4 +13,6 @@ export interface StructuredOutputCostBreakdown { completionTokens: number; /** This is the number of cached prompt tokens used to evaluate this structured output. This is a subset of `promptTokens`, not an addition to it. */ cachedPromptTokens?: number | undefined; + /** This is the number of reasoning tokens the model generated for this structured output. This is a subset of `completionTokens`, not an addition to it: reasoning tokens are already billed at the output-token rate, so this is for visibility only and does not affect `cost`. */ + reasoningTokens?: number | undefined; } diff --git a/src/api/types/StructuredOutputModel.ts b/src/api/types/StructuredOutputModel.ts index 1365c750..284ff797 100644 --- a/src/api/types/StructuredOutputModel.ts +++ b/src/api/types/StructuredOutputModel.ts @@ -6,7 +6,8 @@ import type * as Vapi from "../index.js"; * This is the model that will be used to extract the structured output. * * To provide your own custom system and user prompts for structured output extraction, populate the messages array with your system and user messages. You can specify liquid templating in your system and user messages. - * Between the system or user messages, you must reference either 'transcript' or 'messages' with the `{{}}` syntax to access the conversation history. + * For text extraction, you must reference 'transcript', 'messages', or 'messagesWithConfidence' with the `{{}}` syntax to access the conversation history. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results but omits caller transcription-confidence fields. Text extraction can use `{{messagesWithConfidence}}` when the output needs the original message history with transcription confidence. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. * Between the system or user messages, you must reference a variation of the structured output with the `{{}}` syntax to access the structured output definition. * i.e.: * `{{structuredOutput}}` diff --git a/src/api/types/SubscriptionStatus.ts b/src/api/types/SubscriptionStatus.ts index 7ede4436..46a82304 100644 --- a/src/api/types/SubscriptionStatus.ts +++ b/src/api/types/SubscriptionStatus.ts @@ -7,5 +7,6 @@ export const SubscriptionStatus = { Active: "active", Frozen: "frozen", + Blocked: "blocked", } as const; export type SubscriptionStatus = (typeof SubscriptionStatus)[keyof typeof SubscriptionStatus]; diff --git a/src/api/types/TavusConversationProperties.ts b/src/api/types/TavusConversationProperties.ts index 03ad8c9e..4b748e40 100644 --- a/src/api/types/TavusConversationProperties.ts +++ b/src/api/types/TavusConversationProperties.ts @@ -3,43 +3,4 @@ /** * Tavus conversation behavior and media settings, including duration, participant timeouts, recording, transcription, background, language, and recording storage. */ -export interface TavusConversationProperties { - /** - * The maximum duration of the call in seconds. The default `maxCallDuration` is 3600 seconds (1 hour). - * Once the time limit specified by this parameter has been reached, the conversation will automatically shut down. - */ - maxCallDuration?: number | undefined; - /** The duration in seconds after which the call will be automatically shut down once the last participant leaves. */ - participantLeftTimeout?: number | undefined; - /** - * Starting from conversation creation, the duration in seconds after which the call will be automatically shut down if no participant joins the call. - * Default is 300 seconds (5 minutes). - */ - participantAbsentTimeout?: number | undefined; - /** If true, the user will be able to record the conversation. */ - enableRecording?: boolean | undefined; - /** - * If true, the user will be able to transcribe the conversation. - * You can find more instructions on displaying transcriptions if you are using your custom DailyJS components here. - * You need to have an event listener on Daily that listens for `app-messages`. - */ - enableTranscription?: boolean | undefined; - /** - * If true, the background will be replaced with a greenscreen (RGB values: `[0, 255, 155]`). - * You can use WebGL on the frontend to make the greenscreen transparent or change its color. - */ - applyGreenscreen?: boolean | undefined; - /** - * The language of the conversation. Please provide the **full language name**, not the two-letter code. - * If you are using your own TTS voice, please ensure it supports the language you provide. - * If you are using a stock replica or default persona, please note that only ElevenLabs and Cartesia supported languages are available. - * You can find a full list of supported languages for Cartesia here, for ElevenLabs here, and for PlayHT here. - */ - language?: string | undefined; - /** The name of the S3 bucket where the recording will be stored. */ - recordingS3BucketName?: string | undefined; - /** The region of the S3 bucket where the recording will be stored. */ - recordingS3BucketRegion?: string | undefined; - /** The ARN of the role that will be assumed to access the S3 bucket. */ - awsAssumeRoleArn?: string | undefined; -} +export type TavusConversationProperties = unknown; diff --git a/src/api/types/TavusVoice.ts b/src/api/types/TavusVoice.ts index 0a1d99d2..27e370bd 100644 --- a/src/api/types/TavusVoice.ts +++ b/src/api/types/TavusVoice.ts @@ -1,29 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -import type * as Vapi from "../index.js"; - /** * Configuration for using Tavus as the assistant's voice provider, including persona, callback, context, greeting, conversation properties, chunking, caching, and fallback settings. */ -export interface TavusVoice { - /** This is the flag to toggle voice caching for the assistant. */ - cachingEnabled?: boolean | undefined; - /** This is the provider-specific ID that will be used. */ - voiceId: Vapi.TavusVoiceVoiceId; - /** This is the plan for chunking the model output before it is sent to the voice provider. */ - chunkPlan?: Vapi.ChunkPlan | undefined; - /** This is the unique identifier for the persona that the replica will use in the conversation. */ - personaId?: string | undefined; - /** This is the url that will receive webhooks with updates regarding the conversation state. */ - callbackUrl?: string | undefined; - /** This is the name for the conversation. */ - conversationName?: string | undefined; - /** This is the context that will be appended to any context provided in the persona, if one is provided. */ - conversationalContext?: string | undefined; - /** This is the custom greeting that the replica will give once a participant joines the conversation. */ - customGreeting?: string | undefined; - /** These are optional properties used to customize the conversation. */ - properties?: Vapi.TavusConversationProperties | undefined; - /** This is the plan for voice provider fallbacks in the event that the primary voice provider fails. */ - fallbackPlan?: Vapi.FallbackPlan | undefined; -} +export type TavusVoice = unknown; diff --git a/src/api/types/TavusVoiceVoiceId.ts b/src/api/types/TavusVoiceVoiceId.ts deleted file mode 100644 index 1a8d8a3c..00000000 --- a/src/api/types/TavusVoiceVoiceId.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -import type * as Vapi from "../index.js"; - -/** - * This is the provider-specific ID that will be used. - */ -export type TavusVoiceVoiceId = Vapi.TavusVoiceVoiceIdZero | string; diff --git a/src/api/types/TavusVoiceVoiceIdZero.ts b/src/api/types/TavusVoiceVoiceIdZero.ts deleted file mode 100644 index 0acf20f4..00000000 --- a/src/api/types/TavusVoiceVoiceIdZero.ts +++ /dev/null @@ -1,6 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export const TavusVoiceVoiceIdZero = { - R52Da2535A: "r52da2535a", -} as const; -export type TavusVoiceVoiceIdZero = (typeof TavusVoiceVoiceIdZero)[keyof typeof TavusVoiceVoiceIdZero]; diff --git a/src/api/types/TesterPlan.ts b/src/api/types/TesterPlan.ts index f81f5422..c4eaa3c9 100644 --- a/src/api/types/TesterPlan.ts +++ b/src/api/types/TesterPlan.ts @@ -8,7 +8,7 @@ export interface TesterPlan { * * Make sure to write a detailed system prompt for a test assistant, and use the {{test.script}} variable to access the test script. */ - assistant?: Vapi.CreateAssistantDto | undefined; + assistant?: Vapi.TransientAssistantDto | undefined; /** * Pass an assistant id that can be access * diff --git a/src/api/types/TextEditorTool.ts b/src/api/types/TextEditorTool.ts index 489f7a48..540fde7c 100644 --- a/src/api/types/TextEditorTool.ts +++ b/src/api/types/TextEditorTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface TextEditorTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.TextEditorToolMessagesItem[] | undefined; /** The sub type of tool. */ diff --git a/src/api/types/TextInsightFromCallTableQueriesItem.ts b/src/api/types/TextInsightFromCallTableQueriesItem.ts index 09c134de..e63c5896 100644 --- a/src/api/types/TextInsightFromCallTableQueriesItem.ts +++ b/src/api/types/TextInsightFromCallTableQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type TextInsightFromCallTableQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/TextInsightQueriesItem.ts b/src/api/types/TextInsightQueriesItem.ts index 7b669ff0..5b1cc44f 100644 --- a/src/api/types/TextInsightQueriesItem.ts +++ b/src/api/types/TextInsightQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type TextInsightQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/TogetherAiModel.ts b/src/api/types/TogetherAiModel.ts index 5f8d5368..a4d41a89 100644 --- a/src/api/types/TogetherAiModel.ts +++ b/src/api/types/TogetherAiModel.ts @@ -33,7 +33,7 @@ export interface TogetherAiModel { model: string; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/TrafficAllocationStaleConflictResponseDto.ts b/src/api/types/TrafficAllocationStaleConflictResponseDto.ts index 91d52274..937596b7 100644 --- a/src/api/types/TrafficAllocationStaleConflictResponseDto.ts +++ b/src/api/types/TrafficAllocationStaleConflictResponseDto.ts @@ -1,9 +1,6 @@ // This file was auto-generated by Fern from our API Definition. -import type * as Vapi from "../index.js"; - export interface TrafficAllocationStaleConflictResponseDto { - error: Vapi.TrafficAllocationStaleConflictResponseDtoError; /** Human-readable reason the create was rejected. */ message: string; /** The allocation currently in effect. Null if none exists yet. */ diff --git a/src/api/types/TrafficAllocationStaleConflictResponseDtoError.ts b/src/api/types/TrafficAllocationStaleConflictResponseDtoError.ts deleted file mode 100644 index 7e2c8a52..00000000 --- a/src/api/types/TrafficAllocationStaleConflictResponseDtoError.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export const TrafficAllocationStaleConflictResponseDtoError = { - StaleAllocation: "stale_allocation", -} as const; -export type TrafficAllocationStaleConflictResponseDtoError = - (typeof TrafficAllocationStaleConflictResponseDtoError)[keyof typeof TrafficAllocationStaleConflictResponseDtoError]; diff --git a/src/api/types/TrafficTabCostBreakdownPerMinuteDto.ts b/src/api/types/TrafficTabCostBreakdownPerMinuteDto.ts new file mode 100644 index 00000000..d04cccd2 --- /dev/null +++ b/src/api/types/TrafficTabCostBreakdownPerMinuteDto.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabCostBreakdownPerMinuteDto { + llm?: (number | null) | undefined; + stt?: (number | null) | undefined; + tts?: (number | null) | undefined; + vapi?: (number | null) | undefined; + transport?: (number | null) | undefined; +} diff --git a/src/api/types/TrafficTabCostPerMinuteDto.ts b/src/api/types/TrafficTabCostPerMinuteDto.ts new file mode 100644 index 00000000..35bb604e --- /dev/null +++ b/src/api/types/TrafficTabCostPerMinuteDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface TrafficTabCostPerMinuteDto { + mean?: (number | null) | undefined; + breakdown: Vapi.TrafficTabCostBreakdownPerMinuteDto; +} diff --git a/src/api/types/TrafficTabDurationSecondsDto.ts b/src/api/types/TrafficTabDurationSecondsDto.ts new file mode 100644 index 00000000..09d24db9 --- /dev/null +++ b/src/api/types/TrafficTabDurationSecondsDto.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabDurationSecondsDto { + mean?: (number | null) | undefined; + stddev?: (number | null) | undefined; + p50?: (number | null) | undefined; + p95?: (number | null) | undefined; +} diff --git a/src/api/types/TrafficTabEndedReasonCountDto.ts b/src/api/types/TrafficTabEndedReasonCountDto.ts new file mode 100644 index 00000000..9dd5e10e --- /dev/null +++ b/src/api/types/TrafficTabEndedReasonCountDto.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabEndedReasonCountDto { + reason: string; + count: number; +} diff --git a/src/api/types/TrafficTabLatencyMsDto.ts b/src/api/types/TrafficTabLatencyMsDto.ts new file mode 100644 index 00000000..1aed0e31 --- /dev/null +++ b/src/api/types/TrafficTabLatencyMsDto.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 TrafficTabLatencyMsDto { + model: Vapi.TrafficTabLatencyStatsDto; + voice: Vapi.TrafficTabLatencyStatsDto; + transcriber: Vapi.TrafficTabLatencyStatsDto; + turn: Vapi.TrafficTabLatencyStatsDto; +} diff --git a/src/api/types/TrafficTabLatencyStatsDto.ts b/src/api/types/TrafficTabLatencyStatsDto.ts new file mode 100644 index 00000000..4ded7644 --- /dev/null +++ b/src/api/types/TrafficTabLatencyStatsDto.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabLatencyStatsDto { + mean?: (number | null) | undefined; + p50?: (number | null) | undefined; + p95?: (number | null) | undefined; +} diff --git a/src/api/types/TrafficTabMetricsDto.ts b/src/api/types/TrafficTabMetricsDto.ts new file mode 100644 index 00000000..847f2c64 --- /dev/null +++ b/src/api/types/TrafficTabMetricsDto.ts @@ -0,0 +1,13 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface TrafficTabMetricsDto { + window: Vapi.TrafficTabMetricsWindowDto; + /** All calls for the assistant in the window, every version. */ + totalCalls: number; + /** The allocation currently governing the assistant. Null when traffic splitting was never configured. */ + currentAllocation?: (Vapi.TrafficAllocation | null) | undefined; + /** One row per version with calls in the window, plus the unversioned row when it has any. Ordered by calls descending, then by version label (numeric-aware), the unversioned row last among equals. */ + versions: Vapi.TrafficTabVersionMetricsDto[]; +} diff --git a/src/api/types/TrafficTabMetricsWindowDto.ts b/src/api/types/TrafficTabMetricsWindowDto.ts new file mode 100644 index 00000000..735a5066 --- /dev/null +++ b/src/api/types/TrafficTabMetricsWindowDto.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface TrafficTabMetricsWindowDto { + /** Start of the window (inclusive), ISO 8601. */ + from: string; + /** End of the window (exclusive), ISO 8601. */ + to: string; + bucket: Vapi.TrafficTabMetricsWindowDtoBucket; +} diff --git a/src/api/types/TrafficTabMetricsWindowDtoBucket.ts b/src/api/types/TrafficTabMetricsWindowDtoBucket.ts new file mode 100644 index 00000000..0e287573 --- /dev/null +++ b/src/api/types/TrafficTabMetricsWindowDtoBucket.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TrafficTabMetricsWindowDtoBucket = { + Hour: "hour", + Day: "day", +} as const; +export type TrafficTabMetricsWindowDtoBucket = + (typeof TrafficTabMetricsWindowDtoBucket)[keyof typeof TrafficTabMetricsWindowDtoBucket]; diff --git a/src/api/types/TrafficTabStructuredOutputDto.ts b/src/api/types/TrafficTabStructuredOutputDto.ts new file mode 100644 index 00000000..bd9f067f --- /dev/null +++ b/src/api/types/TrafficTabStructuredOutputDto.ts @@ -0,0 +1,13 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface TrafficTabStructuredOutputDto { + structuredOutputId: string; + type: Vapi.TrafficTabStructuredOutputDtoType; + /** Calls in the window where this output produced a result. */ + present: number; + numeric?: Vapi.TrafficTabStructuredOutputNumericDto | undefined; + /** Top 10 values by count, for string/boolean outputs. */ + valueCounts?: Vapi.TrafficTabStructuredOutputValueCountDto[] | undefined; +} diff --git a/src/api/types/TrafficTabStructuredOutputDtoType.ts b/src/api/types/TrafficTabStructuredOutputDtoType.ts new file mode 100644 index 00000000..09918fb8 --- /dev/null +++ b/src/api/types/TrafficTabStructuredOutputDtoType.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TrafficTabStructuredOutputDtoType = { + Number: "number", + String: "string", + Boolean: "boolean", + Unknown: "unknown", +} as const; +export type TrafficTabStructuredOutputDtoType = + (typeof TrafficTabStructuredOutputDtoType)[keyof typeof TrafficTabStructuredOutputDtoType]; diff --git a/src/api/types/TrafficTabStructuredOutputNumericDto.ts b/src/api/types/TrafficTabStructuredOutputNumericDto.ts new file mode 100644 index 00000000..a0a1d43f --- /dev/null +++ b/src/api/types/TrafficTabStructuredOutputNumericDto.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabStructuredOutputNumericDto { + mean?: (number | null) | undefined; + stddev?: (number | null) | undefined; + p50?: (number | null) | undefined; + p95?: (number | null) | undefined; + sum?: (number | null) | undefined; +} diff --git a/src/api/types/TrafficTabStructuredOutputValueCountDto.ts b/src/api/types/TrafficTabStructuredOutputValueCountDto.ts new file mode 100644 index 00000000..c3a4e165 --- /dev/null +++ b/src/api/types/TrafficTabStructuredOutputValueCountDto.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabStructuredOutputValueCountDto { + value: string; + count: number; +} diff --git a/src/api/types/TrafficTabTimeseriesPointDto.ts b/src/api/types/TrafficTabTimeseriesPointDto.ts new file mode 100644 index 00000000..3a48f88d --- /dev/null +++ b/src/api/types/TrafficTabTimeseriesPointDto.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface TrafficTabTimeseriesPointDto { + /** Start of the bucket, ISO 8601 (UTC). */ + bucketStart: string; + calls: number; + durationSecondsMean?: (number | null) | undefined; + costPerMinuteMean?: (number | null) | undefined; + turnLatencyMsMean?: (number | null) | undefined; +} diff --git a/src/api/types/TrafficTabVersionMetricsDto.ts b/src/api/types/TrafficTabVersionMetricsDto.ts new file mode 100644 index 00000000..5918cb46 --- /dev/null +++ b/src/api/types/TrafficTabVersionMetricsDto.ts @@ -0,0 +1,24 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface TrafficTabVersionMetricsDto { + assistantVersionId?: (string | null) | undefined; + /** The published version label, such as "v7". Null when no version row resolves (unversioned calls, or a since-purged version). */ + assistantVersionLabel?: (string | null) | undefined; + /** True for the row aggregating calls with no assistant version (stored as SQL NULL). */ + unversioned?: boolean | undefined; + calls: number; + /** The version's share in the currently-governing allocation. Null when the version is not in the current split — never rendered as 0%. */ + configuredPercentage?: (number | null) | undefined; + /** calls / totalCalls * 100 over the window, rounded to 3 decimals. */ + actualPercentage: number; + durationSeconds: Vapi.TrafficTabDurationSecondsDto; + costPerMinute: Vapi.TrafficTabCostPerMinuteDto; + latencyMs: Vapi.TrafficTabLatencyMsDto; + /** Full per-reason counts; the UI unions and top-Ns. */ + endedReasons: Vapi.TrafficTabEndedReasonCountDto[]; + timeseries: Vapi.TrafficTabTimeseriesPointDto[]; + /** Present only when structuredOutputIds was given. */ + structuredOutputs?: Vapi.TrafficTabStructuredOutputDto[] | undefined; +} diff --git a/src/api/types/TransferAssistant.ts b/src/api/types/TransferAssistant.ts index df2f3bf1..6166701e 100644 --- a/src/api/types/TransferAssistant.ts +++ b/src/api/types/TransferAssistant.ts @@ -20,6 +20,7 @@ export interface TransferAssistant { firstMessage?: string | undefined; /** * This is the background sound in the transfer assistant call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.TransferAssistantBackgroundSound | undefined; @@ -48,6 +49,10 @@ export interface TransferAssistant { * @default 120 */ maxDurationSeconds?: number | undefined; + /** This decides whether the transfer assistant runs the main assistant's hooks on the operator leg of a `warm-transfer-experimental` transfer. The operator is the "customer" there. When unset or `true`, the transfer assistant runs all of the main assistant's hooks, plus `hooks`. When `false`, it runs only `hooks`, plus the main assistant's `call.ending` hooks. An `endCall` in an inherited `customer.speech.timeout` hook ends the whole call when the operator is silent, so set this to `false` to stop that. */ + assistantHooksInheritEnabled?: boolean | undefined; + /** These are the hooks the transfer assistant runs on the operator leg of a `warm-transfer-experimental` transfer. The operator is the "customer" there, so `customer.speech.timeout` fires on operator silence. Whether the main assistant's other hooks also run on the operator leg depends on `assistantHooksInheritEnabled`. These hooks run after them. `call.ending` and `call.timeElapsed` are not allowed here. The main assistant's `call.ending` hooks are kept automatically. Time-elapsed hooks are not armed on the operator leg. An `endCall` tool in these hooks ends the whole call, not only the operator leg. A `tool` action must carry an inline `tool`, because `toolId` is not resolved for the transfer assistant. */ + hooks?: Vapi.TransferAssistantHooksItem[] | undefined; /** * This enables filtering of noise and background speech while the user is talking. * diff --git a/src/api/types/TransferAssistantBackgroundSound.ts b/src/api/types/TransferAssistantBackgroundSound.ts index c83a1cbf..169a0c5f 100644 --- a/src/api/types/TransferAssistantBackgroundSound.ts +++ b/src/api/types/TransferAssistantBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the transfer assistant call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type TransferAssistantBackgroundSound = Vapi.TransferAssistantBackgroundSoundZero | string; diff --git a/src/api/types/TransferAssistantBackgroundSoundZero.ts b/src/api/types/TransferAssistantBackgroundSoundZero.ts index 9a359593..3607265b 100644 --- a/src/api/types/TransferAssistantBackgroundSoundZero.ts +++ b/src/api/types/TransferAssistantBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const TransferAssistantBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type TransferAssistantBackgroundSoundZero = (typeof TransferAssistantBackgroundSoundZero)[keyof typeof TransferAssistantBackgroundSoundZero]; diff --git a/src/api/types/TransferAssistantHookAction.ts b/src/api/types/TransferAssistantHookAction.ts deleted file mode 100644 index 90fcbad3..00000000 --- a/src/api/types/TransferAssistantHookAction.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type TransferAssistantHookAction = unknown; diff --git a/src/api/types/TransferAssistantHooksItem.ts b/src/api/types/TransferAssistantHooksItem.ts new file mode 100644 index 00000000..3e6ef43a --- /dev/null +++ b/src/api/types/TransferAssistantHooksItem.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export type TransferAssistantHooksItem = + | Vapi.CallHookAssistantSpeechInterrupted + | Vapi.CallHookCustomerSpeechInterrupted + | Vapi.CallHookCustomerSpeechTimeout + | Vapi.CallHookModelResponseTimeout + | Vapi.CallHookTranscriberEndpointedSpeechLowConfidence; diff --git a/src/api/types/TransferAssistantTranscriber.ts b/src/api/types/TransferAssistantTranscriber.ts index f120358c..53916677 100644 --- a/src/api/types/TransferAssistantTranscriber.ts +++ b/src/api/types/TransferAssistantTranscriber.ts @@ -19,6 +19,7 @@ export type TransferAssistantTranscriber = | Vapi.TransferAssistantTranscriber.Cartesia | Vapi.TransferAssistantTranscriber.Soniox | Vapi.TransferAssistantTranscriber.Xai + | Vapi.TransferAssistantTranscriber.Reson8 | Vapi.TransferAssistantTranscriber.Vapi; export namespace TransferAssistantTranscriber { @@ -74,6 +75,10 @@ export namespace TransferAssistantTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/TransferAssistantVoice.ts b/src/api/types/TransferAssistantVoice.ts index 3dfc1e0a..1626f169 100644 --- a/src/api/types/TransferAssistantVoice.ts +++ b/src/api/types/TransferAssistantVoice.ts @@ -19,7 +19,6 @@ export type TransferAssistantVoice = | Vapi.TransferAssistantVoice.Wellsaid | Vapi.TransferAssistantVoice.RimeAi | Vapi.TransferAssistantVoice.SmallestAi - | Vapi.TransferAssistantVoice.Tavus | Vapi.TransferAssistantVoice.Vapi | Vapi.TransferAssistantVoice.Sesame | Vapi.TransferAssistantVoice.Inworld @@ -80,10 +79,6 @@ export namespace TransferAssistantVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/TransferCallTool.ts b/src/api/types/TransferCallTool.ts index dc9a99da..e0f83a85 100644 --- a/src/api/types/TransferCallTool.ts +++ b/src/api/types/TransferCallTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface TransferCallTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.TransferCallToolMessagesItem[] | undefined; /** These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called. */ diff --git a/src/api/types/TransientAssistantDto.ts b/src/api/types/TransientAssistantDto.ts new file mode 100644 index 00000000..f207d8f7 --- /dev/null +++ b/src/api/types/TransientAssistantDto.ts @@ -0,0 +1,152 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface TransientAssistantDto { + /** These are the options for the assistant's transcriber. */ + transcriber?: Vapi.TransientAssistantDtoTranscriber | undefined; + /** These are the options for the assistant's LLM. */ + model?: Vapi.TransientAssistantDtoModel | undefined; + /** These are the options for the assistant's voice. */ + voice?: Vapi.TransientAssistantDtoVoice | undefined; + /** + * This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.). + * + * If unspecified, assistant will wait for user to speak and use the model to respond once they speak. + */ + firstMessage?: string | undefined; + firstMessageInterruptionsEnabled?: boolean | undefined; + /** + * This is the mode for the first message. Default is 'assistant-speaks-first'. + * + * Use: + * - 'assistant-speaks-first' to have the assistant speak first. + * - 'assistant-waits-for-user' to have the assistant wait for the user to speak first. + * - 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points). + * + * @default 'assistant-speaks-first' + */ + firstMessageMode?: Vapi.TransientAssistantDtoFirstMessageMode | undefined; + /** + * These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool]. + * By default, voicemail detection is disabled. + */ + voicemailDetection?: Vapi.TransientAssistantDtoVoicemailDetection | undefined; + /** These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transfer-update,transcript,tool-calls,user-interrupted,voice-input,workflow.node.started,assistant.started. You can check the shape of the messages in ClientMessage schema. */ + clientMessages?: Vapi.TransientAssistantDtoClientMessagesItem[] | undefined; + /** These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,handoff-destination-request,user-interrupted,assistant.started. You can check the shape of the messages in ServerMessage schema. */ + serverMessages?: Vapi.TransientAssistantDtoServerMessagesItem[] | undefined; + /** + * This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended. + * + * @default 600 (10 minutes) + */ + maxDurationSeconds?: number | undefined; + /** + * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. + * You can also provide a custom sound by providing a URL to an audio file. + */ + backgroundSound?: Vapi.TransientAssistantDtoBackgroundSound | undefined; + /** + * This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech. + * + * @default false + */ + modelOutputInMessagesEnabled?: boolean | undefined; + /** These are the configurations to be passed to the transport providers of assistant's calls, like Twilio. You can store multiple configurations for different transport providers. For a call, only the configuration matching the call transport provider is used. */ + transportConfigurations?: Vapi.TransportConfigurationTwilio[] | undefined; + /** + * This is the plan for observability of assistant's calls. + * + * Currently, only Langfuse is supported. + */ + observabilityPlan?: Vapi.LangfuseObservabilityPlan | undefined; + /** These are dynamic credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials. */ + credentials?: Vapi.TransientAssistantDtoCredentialsItem[] | undefined; + /** This is a set of actions that will be performed on certain events. */ + hooks?: Vapi.TransientAssistantDtoHooksItem[] | undefined; + /** + * This is the name of the assistant. + * + * This is required when you want to transfer between assistants in a call. + */ + name?: string | undefined; + /** + * This is the message that the assistant will say if the call is forwarded to voicemail. + * + * If unspecified, it will hang up. + */ + voicemailMessage?: string | undefined; + /** + * This is the message that the assistant will say if it ends the call. + * + * If unspecified, it will hang up without saying anything. + */ + endCallMessage?: string | undefined; + /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ + endCallPhrases?: string[] | undefined; + compliancePlan?: Vapi.CompliancePlan | undefined; + /** This is for metadata you want to store on the assistant. */ + metadata?: Record | undefined; + /** + * This enables filtering of noise and background speech while the user is talking. + * + * Features: + * - Smart denoising using Krisp + * - Fourier denoising + * + * Smart denoising can be combined with or used independently of Fourier denoising. + * + * Order of precedence: + * - Smart denoising + * - Fourier denoising + */ + backgroundSpeechDenoisingPlan?: Vapi.BackgroundSpeechDenoisingPlan | undefined; + /** This is the plan for analysis of assistant's calls. Stored in `call.analysis`. */ + analysisPlan?: Vapi.AnalysisPlan | undefined; + /** This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`. */ + artifactPlan?: Vapi.ArtifactPlan | undefined; + /** + * This is the plan for when the assistant should start talking. + * + * You should configure this if you're running into these issues: + * - The assistant is too slow to start talking after the customer is done speaking. + * - The assistant is too fast to start talking after the customer is done speaking. + * - The assistant is so fast that it's actually interrupting the customer. + */ + startSpeakingPlan?: Vapi.StartSpeakingPlan | undefined; + /** + * This is the plan for when assistant should stop talking on customer interruption. + * + * You should configure this if you're running into these issues: + * - The assistant is too slow to recognize customer's interruption. + * - The assistant is too fast to recognize customer's interruption. + * - The assistant is getting interrupted by phrases that are just acknowledgments. + * - The assistant is getting interrupted by background noises. + * - The assistant is not properly stopping -- it starts talking right after getting interrupted. + */ + stopSpeakingPlan?: Vapi.StopSpeakingPlan | undefined; + /** + * This is the plan for real-time monitoring of the assistant's calls. + * + * Usage: + * - To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`. + * - To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`. + * - To attach monitors to the assistant, set `monitorPlan.monitorIds` to the set of monitor ids. + */ + monitorPlan?: Vapi.MonitorPlan | undefined; + /** These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this. */ + credentialIds?: string[] | undefined; + /** + * This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema. + * + * The order of precedence is: + * + * 1. assistant.server.url + * 2. phoneNumber.serverUrl + * 3. org.serverUrl + */ + server?: Vapi.Server | undefined; + keypadInputPlan?: Vapi.KeypadInputPlan | undefined; +} diff --git a/src/api/types/TransientAssistantDtoBackgroundSound.ts b/src/api/types/TransientAssistantDtoBackgroundSound.ts new file mode 100644 index 00000000..25c0a6ce --- /dev/null +++ b/src/api/types/TransientAssistantDtoBackgroundSound.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. + * You can also provide a custom sound by providing a URL to an audio file. + */ +export type TransientAssistantDtoBackgroundSound = Vapi.TransientAssistantDtoBackgroundSoundZero | string; diff --git a/src/api/types/TransientAssistantDtoBackgroundSoundZero.ts b/src/api/types/TransientAssistantDtoBackgroundSoundZero.ts new file mode 100644 index 00000000..b973b71e --- /dev/null +++ b/src/api/types/TransientAssistantDtoBackgroundSoundZero.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TransientAssistantDtoBackgroundSoundZero = { + Off: "off", + Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", +} as const; +export type TransientAssistantDtoBackgroundSoundZero = + (typeof TransientAssistantDtoBackgroundSoundZero)[keyof typeof TransientAssistantDtoBackgroundSoundZero]; diff --git a/src/api/types/TransientAssistantDtoClientMessagesItem.ts b/src/api/types/TransientAssistantDtoClientMessagesItem.ts new file mode 100644 index 00000000..5c59f616 --- /dev/null +++ b/src/api/types/TransientAssistantDtoClientMessagesItem.ts @@ -0,0 +1,25 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TransientAssistantDtoClientMessagesItem = { + ConversationUpdate: "conversation-update", + AssistantSpeechStarted: "assistant.speechStarted", + FunctionCall: "function-call", + FunctionCallResult: "function-call-result", + Hang: "hang", + LanguageChanged: "language-changed", + Metadata: "metadata", + ModelOutput: "model-output", + SpeechUpdate: "speech-update", + StatusUpdate: "status-update", + Transcript: "transcript", + ToolCalls: "tool-calls", + ToolCallsResult: "tool-calls-result", + ToolCompleted: "tool.completed", + TransferUpdate: "transfer-update", + UserInterrupted: "user-interrupted", + VoiceInput: "voice-input", + WorkflowNodeStarted: "workflow.node.started", + AssistantStarted: "assistant.started", +} as const; +export type TransientAssistantDtoClientMessagesItem = + (typeof TransientAssistantDtoClientMessagesItem)[keyof typeof TransientAssistantDtoClientMessagesItem]; diff --git a/src/api/types/TransientAssistantDtoCredentialsItem.ts b/src/api/types/TransientAssistantDtoCredentialsItem.ts new file mode 100644 index 00000000..fbe6c485 --- /dev/null +++ b/src/api/types/TransientAssistantDtoCredentialsItem.ts @@ -0,0 +1,358 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export type TransientAssistantDtoCredentialsItem = + | Vapi.TransientAssistantDtoCredentialsItem._11Labs + | Vapi.TransientAssistantDtoCredentialsItem.Anthropic + | Vapi.TransientAssistantDtoCredentialsItem.AnthropicBedrock + | Vapi.TransientAssistantDtoCredentialsItem.Anyscale + | Vapi.TransientAssistantDtoCredentialsItem.AssemblyAi + | Vapi.TransientAssistantDtoCredentialsItem.AzureOpenai + | Vapi.TransientAssistantDtoCredentialsItem.Azure + | Vapi.TransientAssistantDtoCredentialsItem.ByoSipTrunk + | Vapi.TransientAssistantDtoCredentialsItem.Cartesia + | Vapi.TransientAssistantDtoCredentialsItem.Cerebras + | Vapi.TransientAssistantDtoCredentialsItem.Cloudflare + | Vapi.TransientAssistantDtoCredentialsItem.CustomLlm + | Vapi.TransientAssistantDtoCredentialsItem.Deepgram + | Vapi.TransientAssistantDtoCredentialsItem.Deepinfra + | Vapi.TransientAssistantDtoCredentialsItem.DeepSeek + | Vapi.TransientAssistantDtoCredentialsItem.Gcp + | Vapi.TransientAssistantDtoCredentialsItem.Gladia + | Vapi.TransientAssistantDtoCredentialsItem.Gohighlevel + | Vapi.TransientAssistantDtoCredentialsItem.Google + | Vapi.TransientAssistantDtoCredentialsItem.Groq + | Vapi.TransientAssistantDtoCredentialsItem.InflectionAi + | Vapi.TransientAssistantDtoCredentialsItem.Langfuse + | Vapi.TransientAssistantDtoCredentialsItem.Lmnt + | Vapi.TransientAssistantDtoCredentialsItem.Make + | Vapi.TransientAssistantDtoCredentialsItem.Openai + | Vapi.TransientAssistantDtoCredentialsItem.Openrouter + | Vapi.TransientAssistantDtoCredentialsItem.PerplexityAi + | Vapi.TransientAssistantDtoCredentialsItem.Playht + | Vapi.TransientAssistantDtoCredentialsItem.RimeAi + | Vapi.TransientAssistantDtoCredentialsItem.Runpod + | Vapi.TransientAssistantDtoCredentialsItem.S3 + | Vapi.TransientAssistantDtoCredentialsItem.S3Compatible + | Vapi.TransientAssistantDtoCredentialsItem.Supabase + | Vapi.TransientAssistantDtoCredentialsItem.SmallestAi + | Vapi.TransientAssistantDtoCredentialsItem.Tavus + | Vapi.TransientAssistantDtoCredentialsItem.TogetherAi + | Vapi.TransientAssistantDtoCredentialsItem.Twilio + | Vapi.TransientAssistantDtoCredentialsItem.Vonage + | Vapi.TransientAssistantDtoCredentialsItem.Webhook + | Vapi.TransientAssistantDtoCredentialsItem.CustomCredential + | Vapi.TransientAssistantDtoCredentialsItem.Xai + | Vapi.TransientAssistantDtoCredentialsItem.Microsoft + | Vapi.TransientAssistantDtoCredentialsItem.Neuphonic + | Vapi.TransientAssistantDtoCredentialsItem.Hume + | Vapi.TransientAssistantDtoCredentialsItem.Mistral + | Vapi.TransientAssistantDtoCredentialsItem.Speechmatics + | Vapi.TransientAssistantDtoCredentialsItem.Soniox + | Vapi.TransientAssistantDtoCredentialsItem.Reson8 + | Vapi.TransientAssistantDtoCredentialsItem.GoogleCalendarOauth2Client + | Vapi.TransientAssistantDtoCredentialsItem.GoogleCalendarOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.GoogleSheetsOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.SlackOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.GhlOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.Inworld + | Vapi.TransientAssistantDtoCredentialsItem.Minimax + | Vapi.TransientAssistantDtoCredentialsItem.Wellsaid + | Vapi.TransientAssistantDtoCredentialsItem.Email + | Vapi.TransientAssistantDtoCredentialsItem.SlackWebhook; + +export namespace TransientAssistantDtoCredentialsItem { + export interface _11Labs extends Vapi.CreateElevenLabsCredentialDto { + provider: "11labs"; + } + + export interface Anthropic extends Vapi.CreateAnthropicCredentialDto { + provider: "anthropic"; + } + + export interface AnthropicBedrock extends Vapi.CreateAnthropicBedrockCredentialDto { + provider: "anthropic-bedrock"; + } + + export interface Anyscale extends Vapi.CreateAnyscaleCredentialDto { + provider: "anyscale"; + } + + export interface AssemblyAi extends Vapi.CreateAssemblyAiCredentialDto { + provider: "assembly-ai"; + } + + export interface AzureOpenai extends Vapi.CreateAzureOpenAiCredentialDto { + provider: "azure-openai"; + } + + export interface Azure extends Vapi.CreateAzureCredentialDto { + provider: "azure"; + } + + export interface ByoSipTrunk extends Vapi.CreateByoSipTrunkCredentialDto { + provider: "byo-sip-trunk"; + } + + export interface Cartesia extends Vapi.CreateCartesiaCredentialDto { + provider: "cartesia"; + } + + export interface Cerebras extends Vapi.CreateCerebrasCredentialDto { + provider: "cerebras"; + } + + export interface Cloudflare extends Vapi.CreateCloudflareCredentialDto { + provider: "cloudflare"; + } + + export interface CustomLlm extends Vapi.CreateCustomLlmCredentialDto { + provider: "custom-llm"; + } + + export interface Deepgram extends Vapi.CreateDeepgramCredentialDto { + provider: "deepgram"; + } + + export interface Deepinfra extends Vapi.CreateDeepInfraCredentialDto { + provider: "deepinfra"; + } + + export interface DeepSeek extends Vapi.CreateDeepSeekCredentialDto { + provider: "deep-seek"; + } + + export interface Gcp extends Vapi.CreateGcpCredentialDto { + provider: "gcp"; + } + + export interface Gladia extends Vapi.CreateGladiaCredentialDto { + provider: "gladia"; + } + + export interface Gohighlevel extends Vapi.CreateGoHighLevelCredentialDto { + provider: "gohighlevel"; + } + + export interface Google extends Vapi.CreateGoogleCredentialDto { + provider: "google"; + } + + export interface Groq extends Vapi.CreateGroqCredentialDto { + provider: "groq"; + } + + export interface InflectionAi extends Vapi.CreateInflectionAiCredentialDto { + provider: "inflection-ai"; + } + + export interface Langfuse extends Vapi.CreateLangfuseCredentialDto { + provider: "langfuse"; + } + + export interface Lmnt extends Vapi.CreateLmntCredentialDto { + provider: "lmnt"; + } + + export interface Make extends Vapi.CreateMakeCredentialDto { + provider: "make"; + } + + export interface Openai extends Vapi.CreateOpenAiCredentialDto { + provider: "openai"; + } + + export interface Openrouter extends Vapi.CreateOpenRouterCredentialDto { + provider: "openrouter"; + } + + export interface PerplexityAi extends Vapi.CreatePerplexityAiCredentialDto { + provider: "perplexity-ai"; + } + + export interface Playht extends Vapi.CreatePlayHtCredentialDto { + provider: "playht"; + } + + export interface RimeAi extends Vapi.CreateRimeAiCredentialDto { + provider: "rime-ai"; + } + + export interface Runpod extends Vapi.CreateRunpodCredentialDto { + provider: "runpod"; + } + + export interface S3 extends Vapi.CreateS3CredentialDto { + provider: "s3"; + } + + export interface S3Compatible extends Vapi.CreateS3CompatibleCredentialDto { + provider: "s3-compatible"; + } + + export interface Supabase extends Vapi.CreateSupabaseCredentialDto { + provider: "supabase"; + } + + export interface SmallestAi extends Vapi.CreateSmallestAiCredentialDto { + provider: "smallest-ai"; + } + + export interface Tavus extends Vapi.CreateTavusCredentialDto { + provider: "tavus"; + } + + export interface TogetherAi extends Vapi.CreateTogetherAiCredentialDto { + provider: "together-ai"; + } + + export interface Twilio extends Vapi.CreateTwilioCredentialDto { + provider: "twilio"; + } + + export interface Vonage extends Vapi.CreateVonageCredentialDto { + provider: "vonage"; + } + + export interface Webhook extends Vapi.CreateWebhookCredentialDto { + provider: "webhook"; + } + + export interface CustomCredential extends Vapi.CreateCustomCredentialDto { + provider: "custom-credential"; + } + + export interface Xai extends Vapi.CreateXAiCredentialDto { + provider: "xai"; + } + + export interface Microsoft extends Vapi.CreateMicrosoftCredentialDto { + provider: "microsoft"; + } + + export interface Neuphonic extends Vapi.CreateNeuphonicCredentialDto { + provider: "neuphonic"; + } + + export interface Hume extends Vapi.CreateHumeCredentialDto { + provider: "hume"; + } + + export interface Mistral extends Vapi.CreateMistralCredentialDto { + provider: "mistral"; + } + + export interface Speechmatics extends Vapi.CreateSpeechmaticsCredentialDto { + provider: "speechmatics"; + } + + export interface Soniox extends Vapi.CreateSonioxCredentialDto { + provider: "soniox"; + } + + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { + provider: "google.calendar.oauth2-client"; + } + + export interface GoogleCalendarOauth2Authorization + extends Vapi.CreateGoogleCalendarOAuth2AuthorizationCredentialDto { + provider: "google.calendar.oauth2-authorization"; + } + + export interface GoogleSheetsOauth2Authorization extends Vapi.CreateGoogleSheetsOAuth2AuthorizationCredentialDto { + provider: "google.sheets.oauth2-authorization"; + } + + export interface SlackOauth2Authorization extends Vapi.CreateSlackOAuth2AuthorizationCredentialDto { + provider: "slack.oauth2-authorization"; + } + + export interface GhlOauth2Authorization extends Vapi.CreateGoHighLevelMcpCredentialDto { + provider: "ghl.oauth2-authorization"; + } + + export interface Inworld extends Vapi.CreateInworldCredentialDto { + provider: "inworld"; + } + + export interface Minimax extends Vapi.CreateMinimaxCredentialDto { + provider: "minimax"; + } + + export interface Wellsaid extends Vapi.CreateWellSaidCredentialDto { + provider: "wellsaid"; + } + + export interface Email extends Vapi.CreateEmailCredentialDto { + provider: "email"; + } + + export interface SlackWebhook extends Vapi.CreateSlackWebhookCredentialDto { + provider: "slack-webhook"; + } + + export type Response = + | Vapi.TransientAssistantDtoCredentialsItem._11Labs + | Vapi.TransientAssistantDtoCredentialsItem.Anthropic + | Vapi.TransientAssistantDtoCredentialsItem.AnthropicBedrock + | Vapi.TransientAssistantDtoCredentialsItem.Anyscale + | Vapi.TransientAssistantDtoCredentialsItem.AssemblyAi + | Vapi.TransientAssistantDtoCredentialsItem.AzureOpenai + | Vapi.TransientAssistantDtoCredentialsItem.Azure + | Vapi.TransientAssistantDtoCredentialsItem.ByoSipTrunk + | Vapi.TransientAssistantDtoCredentialsItem.Cartesia + | Vapi.TransientAssistantDtoCredentialsItem.Cerebras + | Vapi.TransientAssistantDtoCredentialsItem.Cloudflare + | Vapi.TransientAssistantDtoCredentialsItem.CustomLlm + | Vapi.TransientAssistantDtoCredentialsItem.Deepgram + | Vapi.TransientAssistantDtoCredentialsItem.Deepinfra + | Vapi.TransientAssistantDtoCredentialsItem.DeepSeek + | Vapi.TransientAssistantDtoCredentialsItem.Gcp + | Vapi.TransientAssistantDtoCredentialsItem.Gladia + | Vapi.TransientAssistantDtoCredentialsItem.Gohighlevel + | Vapi.TransientAssistantDtoCredentialsItem.Google + | Vapi.TransientAssistantDtoCredentialsItem.Groq + | Vapi.TransientAssistantDtoCredentialsItem.InflectionAi + | Vapi.TransientAssistantDtoCredentialsItem.Langfuse + | Vapi.TransientAssistantDtoCredentialsItem.Lmnt + | Vapi.TransientAssistantDtoCredentialsItem.Make + | Vapi.TransientAssistantDtoCredentialsItem.Openai + | Vapi.TransientAssistantDtoCredentialsItem.Openrouter + | Vapi.TransientAssistantDtoCredentialsItem.PerplexityAi + | Vapi.TransientAssistantDtoCredentialsItem.Playht + | Vapi.TransientAssistantDtoCredentialsItem.RimeAi + | Vapi.TransientAssistantDtoCredentialsItem.Runpod + | Vapi.TransientAssistantDtoCredentialsItem.S3 + | Vapi.TransientAssistantDtoCredentialsItem.S3Compatible + | Vapi.TransientAssistantDtoCredentialsItem.Supabase + | Vapi.TransientAssistantDtoCredentialsItem.SmallestAi + | Vapi.TransientAssistantDtoCredentialsItem.Tavus + | Vapi.TransientAssistantDtoCredentialsItem.TogetherAi + | Vapi.TransientAssistantDtoCredentialsItem.Twilio + | Vapi.TransientAssistantDtoCredentialsItem.Vonage + | Vapi.TransientAssistantDtoCredentialsItem.Webhook + | Vapi.TransientAssistantDtoCredentialsItem.CustomCredential + | Vapi.TransientAssistantDtoCredentialsItem.Xai + | Vapi.TransientAssistantDtoCredentialsItem.Microsoft + | Vapi.TransientAssistantDtoCredentialsItem.Neuphonic + | Vapi.TransientAssistantDtoCredentialsItem.Hume + | Vapi.TransientAssistantDtoCredentialsItem.Mistral + | Vapi.TransientAssistantDtoCredentialsItem.Speechmatics + | Vapi.TransientAssistantDtoCredentialsItem.Soniox + | Vapi.TransientAssistantDtoCredentialsItem.Reson8 + | Vapi.TransientAssistantDtoCredentialsItem.GoogleCalendarOauth2Client + | Vapi.TransientAssistantDtoCredentialsItem.GoogleCalendarOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.GoogleSheetsOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.SlackOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.GhlOauth2Authorization + | Vapi.TransientAssistantDtoCredentialsItem.Inworld + | Vapi.TransientAssistantDtoCredentialsItem.Minimax + | Vapi.TransientAssistantDtoCredentialsItem.Wellsaid + | Vapi.TransientAssistantDtoCredentialsItem.Email + | Vapi.TransientAssistantDtoCredentialsItem.SlackWebhook; +} diff --git a/src/api/types/TransientAssistantDtoFirstMessageMode.ts b/src/api/types/TransientAssistantDtoFirstMessageMode.ts new file mode 100644 index 00000000..16c59f00 --- /dev/null +++ b/src/api/types/TransientAssistantDtoFirstMessageMode.ts @@ -0,0 +1,19 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * This is the mode for the first message. Default is 'assistant-speaks-first'. + * + * Use: + * - 'assistant-speaks-first' to have the assistant speak first. + * - 'assistant-waits-for-user' to have the assistant wait for the user to speak first. + * - 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points). + * + * @default 'assistant-speaks-first' + */ +export const TransientAssistantDtoFirstMessageMode = { + AssistantSpeaksFirst: "assistant-speaks-first", + AssistantSpeaksFirstWithModelGeneratedMessage: "assistant-speaks-first-with-model-generated-message", + AssistantWaitsForUser: "assistant-waits-for-user", +} as const; +export type TransientAssistantDtoFirstMessageMode = + (typeof TransientAssistantDtoFirstMessageMode)[keyof typeof TransientAssistantDtoFirstMessageMode]; diff --git a/src/api/types/TransientAssistantDtoHooksItem.ts b/src/api/types/TransientAssistantDtoHooksItem.ts new file mode 100644 index 00000000..ac903b7f --- /dev/null +++ b/src/api/types/TransientAssistantDtoHooksItem.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export type TransientAssistantDtoHooksItem = + | Vapi.CallHookCallEnding + | Vapi.CallHookAssistantSpeechInterrupted + | Vapi.CallHookCustomerSpeechInterrupted + | Vapi.CallHookCustomerSpeechTimeout + | Vapi.SessionCreatedHook; diff --git a/src/api/types/TransientAssistantDtoModel.ts b/src/api/types/TransientAssistantDtoModel.ts new file mode 100644 index 00000000..adcb2e8d --- /dev/null +++ b/src/api/types/TransientAssistantDtoModel.ts @@ -0,0 +1,117 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * These are the options for the assistant's LLM. + */ +export type TransientAssistantDtoModel = + | Vapi.TransientAssistantDtoModel.Anthropic + | Vapi.TransientAssistantDtoModel.AnthropicBedrock + | Vapi.TransientAssistantDtoModel.Anyscale + | Vapi.TransientAssistantDtoModel.Cerebras + | Vapi.TransientAssistantDtoModel.CustomLlm + | Vapi.TransientAssistantDtoModel.Deepinfra + | Vapi.TransientAssistantDtoModel.DeepSeek + | Vapi.TransientAssistantDtoModel.Google + | Vapi.TransientAssistantDtoModel.Groq + | Vapi.TransientAssistantDtoModel.InflectionAi + | Vapi.TransientAssistantDtoModel.Minimax + | Vapi.TransientAssistantDtoModel.Openai + | Vapi.TransientAssistantDtoModel.Openrouter + | Vapi.TransientAssistantDtoModel.PerplexityAi + | Vapi.TransientAssistantDtoModel.TogetherAi + | Vapi.TransientAssistantDtoModel.Xai + | Vapi.TransientAssistantDtoModel.Vapi; + +export namespace TransientAssistantDtoModel { + export interface Anthropic extends Vapi.AnthropicModel { + provider: "anthropic"; + } + + export interface AnthropicBedrock extends Vapi.AnthropicBedrockModel { + provider: "anthropic-bedrock"; + } + + export interface Anyscale extends Vapi.AnyscaleModel { + provider: "anyscale"; + } + + export interface Cerebras extends Vapi.CerebrasModel { + provider: "cerebras"; + } + + export interface CustomLlm extends Vapi.CustomLlmModel { + provider: "custom-llm"; + } + + export interface Deepinfra extends Vapi.DeepInfraModel { + provider: "deepinfra"; + } + + export interface DeepSeek extends Vapi.DeepSeekModel { + provider: "deep-seek"; + } + + export interface Google extends Vapi.GoogleModel { + provider: "google"; + } + + export interface Groq extends Vapi.GroqModel { + provider: "groq"; + } + + export interface InflectionAi extends Vapi.InflectionAiModel { + provider: "inflection-ai"; + } + + export interface Minimax extends Vapi.MinimaxLlmModel { + provider: "minimax"; + } + + export interface Openai extends Vapi.OpenAiModel { + provider: "openai"; + } + + export interface Openrouter extends Vapi.OpenRouterModel { + provider: "openrouter"; + } + + export interface PerplexityAi extends Vapi.PerplexityAiModel { + provider: "perplexity-ai"; + } + + export interface TogetherAi extends Vapi.TogetherAiModel { + provider: "together-ai"; + } + + export interface Xai extends Vapi.XaiModel { + provider: "xai"; + } + + export interface Vapi extends Vapi.VapiModel { + provider: "vapi"; + } + + /** + * These are the options for the assistant's LLM. + */ + export type Response = + | Vapi.TransientAssistantDtoModel.Anthropic + | Vapi.TransientAssistantDtoModel.AnthropicBedrock + | Vapi.TransientAssistantDtoModel.Anyscale + | Vapi.TransientAssistantDtoModel.Cerebras + | Vapi.TransientAssistantDtoModel.CustomLlm + | Vapi.TransientAssistantDtoModel.Deepinfra + | Vapi.TransientAssistantDtoModel.DeepSeek + | Vapi.TransientAssistantDtoModel.Google + | Vapi.TransientAssistantDtoModel.Groq + | Vapi.TransientAssistantDtoModel.InflectionAi + | Vapi.TransientAssistantDtoModel.Minimax + | Vapi.TransientAssistantDtoModel.Openai + | Vapi.TransientAssistantDtoModel.Openrouter + | Vapi.TransientAssistantDtoModel.PerplexityAi + | Vapi.TransientAssistantDtoModel.TogetherAi + | Vapi.TransientAssistantDtoModel.Xai + | Vapi.TransientAssistantDtoModel.Vapi; +} diff --git a/src/api/types/TransientAssistantDtoServerMessagesItem.ts b/src/api/types/TransientAssistantDtoServerMessagesItem.ts new file mode 100644 index 00000000..6d9eb9d6 --- /dev/null +++ b/src/api/types/TransientAssistantDtoServerMessagesItem.ts @@ -0,0 +1,34 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TransientAssistantDtoServerMessagesItem = { + AssistantStarted: "assistant.started", + AssistantSpeechStarted: "assistant.speechStarted", + ConversationUpdate: "conversation-update", + EndOfCallReport: "end-of-call-report", + FunctionCall: "function-call", + Hang: "hang", + LanguageChanged: "language-changed", + LanguageChangeDetected: "language-change-detected", + ModelOutput: "model-output", + PhoneCallControl: "phone-call-control", + SpeechUpdate: "speech-update", + StatusUpdate: "status-update", + Transcript: "transcript", + TranscriptTranscriptTypeFinal: 'transcript[transcriptType="final"]', + ToolCalls: "tool-calls", + TransferDestinationRequest: "transfer-destination-request", + HandoffDestinationRequest: "handoff-destination-request", + TransferUpdate: "transfer-update", + UserInterrupted: "user-interrupted", + VoiceInput: "voice-input", + ChatCreated: "chat.created", + ChatDeleted: "chat.deleted", + SessionCreated: "session.created", + SessionUpdated: "session.updated", + SessionDeleted: "session.deleted", + CallDeleted: "call.deleted", + CallDeleteFailed: "call.delete.failed", + CallArtifactUpload: "call.artifact.upload", +} as const; +export type TransientAssistantDtoServerMessagesItem = + (typeof TransientAssistantDtoServerMessagesItem)[keyof typeof TransientAssistantDtoServerMessagesItem]; diff --git a/src/api/types/TransientAssistantDtoTranscriber.ts b/src/api/types/TransientAssistantDtoTranscriber.ts new file mode 100644 index 00000000..5f365633 --- /dev/null +++ b/src/api/types/TransientAssistantDtoTranscriber.ts @@ -0,0 +1,85 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * These are the options for the assistant's transcriber. + */ +export type TransientAssistantDtoTranscriber = + | Vapi.TransientAssistantDtoTranscriber.AssemblyAi + | Vapi.TransientAssistantDtoTranscriber.Azure + | Vapi.TransientAssistantDtoTranscriber.CustomTranscriber + | Vapi.TransientAssistantDtoTranscriber.Deepgram + | Vapi.TransientAssistantDtoTranscriber._11Labs + | Vapi.TransientAssistantDtoTranscriber.Gladia + | Vapi.TransientAssistantDtoTranscriber.Google + | Vapi.TransientAssistantDtoTranscriber.Speechmatics + | Vapi.TransientAssistantDtoTranscriber.Talkscriber + | Vapi.TransientAssistantDtoTranscriber.Openai + | Vapi.TransientAssistantDtoTranscriber.Cartesia + | Vapi.TransientAssistantDtoTranscriber.Soniox + | Vapi.TransientAssistantDtoTranscriber.Xai + | Vapi.TransientAssistantDtoTranscriber.Reson8 + | Vapi.TransientAssistantDtoTranscriber.Vapi; + +export namespace TransientAssistantDtoTranscriber { + export interface AssemblyAi extends Vapi.AssemblyAiTranscriber { + provider: "assembly-ai"; + } + + export interface Azure extends Vapi.AzureSpeechTranscriber { + provider: "azure"; + } + + export interface CustomTranscriber extends Vapi.CustomTranscriber { + provider: "custom-transcriber"; + } + + export interface Deepgram extends Vapi.DeepgramTranscriber { + provider: "deepgram"; + } + + export interface _11Labs extends Vapi.ElevenLabsTranscriber { + provider: "11labs"; + } + + export interface Gladia extends Vapi.GladiaTranscriber { + provider: "gladia"; + } + + export interface Google extends Vapi.GoogleTranscriber { + provider: "google"; + } + + export interface Speechmatics extends Vapi.SpeechmaticsTranscriber { + provider: "speechmatics"; + } + + export interface Talkscriber extends Vapi.TalkscriberTranscriber { + provider: "talkscriber"; + } + + export interface Openai extends Vapi.OpenAiTranscriber { + provider: "openai"; + } + + export interface Cartesia extends Vapi.CartesiaTranscriber { + provider: "cartesia"; + } + + export interface Soniox extends Vapi.SonioxTranscriber { + provider: "soniox"; + } + + export interface Xai extends Vapi.XaiTranscriber { + provider: "xai"; + } + + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + + export interface Vapi extends Vapi.VapiTranscriber { + provider: "vapi"; + } +} diff --git a/src/api/types/TransientAssistantDtoVoice.ts b/src/api/types/TransientAssistantDtoVoice.ts new file mode 100644 index 00000000..91e80f87 --- /dev/null +++ b/src/api/types/TransientAssistantDtoVoice.ts @@ -0,0 +1,105 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * These are the options for the assistant's voice. + */ +export type TransientAssistantDtoVoice = + | Vapi.TransientAssistantDtoVoice.Azure + | Vapi.TransientAssistantDtoVoice.Cartesia + | Vapi.TransientAssistantDtoVoice.CustomVoice + | Vapi.TransientAssistantDtoVoice.Deepgram + | Vapi.TransientAssistantDtoVoice._11Labs + | Vapi.TransientAssistantDtoVoice.Hume + | Vapi.TransientAssistantDtoVoice.Lmnt + | Vapi.TransientAssistantDtoVoice.Neuphonic + | Vapi.TransientAssistantDtoVoice.Openai + | Vapi.TransientAssistantDtoVoice.Playht + | Vapi.TransientAssistantDtoVoice.Wellsaid + | Vapi.TransientAssistantDtoVoice.RimeAi + | Vapi.TransientAssistantDtoVoice.SmallestAi + | Vapi.TransientAssistantDtoVoice.Vapi + | Vapi.TransientAssistantDtoVoice.Sesame + | Vapi.TransientAssistantDtoVoice.Inworld + | Vapi.TransientAssistantDtoVoice.Minimax + | Vapi.TransientAssistantDtoVoice.Xai + | Vapi.TransientAssistantDtoVoice.Microsoft; + +export namespace TransientAssistantDtoVoice { + export interface Azure extends Vapi.AzureVoice { + provider: "azure"; + } + + export interface Cartesia extends Vapi.CartesiaVoice { + provider: "cartesia"; + } + + export interface CustomVoice extends Vapi.CustomVoice { + provider: "custom-voice"; + } + + export interface Deepgram extends Vapi.DeepgramVoice { + provider: "deepgram"; + } + + export interface _11Labs extends Vapi.ElevenLabsVoice { + provider: "11labs"; + } + + export interface Hume extends Vapi.HumeVoice { + provider: "hume"; + } + + export interface Lmnt extends Vapi.LmntVoice { + provider: "lmnt"; + } + + export interface Neuphonic extends Vapi.NeuphonicVoice { + provider: "neuphonic"; + } + + export interface Openai extends Vapi.OpenAiVoice { + provider: "openai"; + } + + export interface Playht extends Vapi.PlayHtVoice { + provider: "playht"; + } + + export interface Wellsaid extends Vapi.WellSaidVoice { + provider: "wellsaid"; + } + + export interface RimeAi extends Vapi.RimeAiVoice { + provider: "rime-ai"; + } + + export interface SmallestAi extends Vapi.SmallestAiVoice { + provider: "smallest-ai"; + } + + export interface Vapi extends Vapi.VapiVoice { + provider: "vapi"; + } + + export interface Sesame extends Vapi.SesameVoice { + provider: "sesame"; + } + + export interface Inworld extends Vapi.InworldVoice { + provider: "inworld"; + } + + export interface Minimax extends Vapi.MinimaxVoice { + provider: "minimax"; + } + + export interface Xai extends Vapi.XaiVoice { + provider: "xai"; + } + + export interface Microsoft extends Vapi.MicrosoftVoice { + provider: "microsoft"; + } +} diff --git a/src/api/types/TransientAssistantDtoVoicemailDetection.ts b/src/api/types/TransientAssistantDtoVoicemailDetection.ts new file mode 100644 index 00000000..18a92994 --- /dev/null +++ b/src/api/types/TransientAssistantDtoVoicemailDetection.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool]. + * By default, voicemail detection is disabled. + */ +export type TransientAssistantDtoVoicemailDetection = + | Vapi.TransientAssistantDtoVoicemailDetectionZero + | Vapi.GoogleVoicemailDetectionPlan + | Vapi.OpenAiVoicemailDetectionPlan + | Vapi.TwilioVoicemailDetectionPlan + | Vapi.VapiVoicemailDetectionPlan; diff --git a/src/api/types/TransientAssistantDtoVoicemailDetectionZero.ts b/src/api/types/TransientAssistantDtoVoicemailDetectionZero.ts new file mode 100644 index 00000000..5e4002fe --- /dev/null +++ b/src/api/types/TransientAssistantDtoVoicemailDetectionZero.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TransientAssistantDtoVoicemailDetectionZero = { + Off: "off", +} as const; +export type TransientAssistantDtoVoicemailDetectionZero = + (typeof TransientAssistantDtoVoicemailDetectionZero)[keyof typeof TransientAssistantDtoVoicemailDetectionZero]; diff --git a/src/api/types/TrieveKnowledgeBase.ts b/src/api/types/TrieveKnowledgeBase.ts deleted file mode 100644 index 93a41d3b..00000000 --- a/src/api/types/TrieveKnowledgeBase.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type TrieveKnowledgeBase = unknown; diff --git a/src/api/types/TrieveKnowledgeBaseImport.ts b/src/api/types/TrieveKnowledgeBaseImport.ts deleted file mode 100644 index e03a8104..00000000 --- a/src/api/types/TrieveKnowledgeBaseImport.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type TrieveKnowledgeBaseImport = unknown; diff --git a/src/api/types/TurnLatency.ts b/src/api/types/TurnLatency.ts index 05299d3a..024c07ed 100644 --- a/src/api/types/TurnLatency.ts +++ b/src/api/types/TurnLatency.ts @@ -1,17 +1,43 @@ // This file was auto-generated by Fern from our API Definition. +import type * as Vapi from "../index.js"; + /** * Model, voice, transcription, endpointing, and total latency measurements for a conversation turn. */ export interface TurnLatency { - /** This is the model latency for the first token. */ + /** + * These are the latency components that were not measured on this turn. A listed component's latency field is not a real measurement: it usually reads 0, which here means "not measured", not 0ms, but a `transcriber` value measured from a speech start keeps its nonzero value. Drop listed components when aggregating. Omitted when every component was measured. + * + * - `transcriber`: no VAD speech marker for the turn, the sample was dropped as stale, the VAD missed this utterance (its newest marker was already used by an earlier turn), the transcript's time predates this utterance, or the VAD had still not flagged the end of speech when the reply started, including when the user kept talking after a tentative stop (the value is then measured from a speech start, or from the stop the user talked through). + * - `endpointing`: no user transcript was committed this turn (for example the first message, or a tool-result turn), or the transcript's time predates this utterance (carried over from an earlier one). + * - `model`: the model sent no output token this turn (for example a static message). + * - `voice`: no voice timing from model output this turn. + */ + unmeasured?: Vapi.TurnLatencyUnmeasuredItem[] | undefined; + /** + * This is the time in milliseconds from the start of the turn's model stage to the model's first output token. + * It includes knowledge-base retrieval and request routing before the provider request. 0 when it was not measured on this turn. + */ modelLatency?: number | undefined; - /** This is the voice latency from the model output. */ + /** + * This is the time in milliseconds from the model's first output token to the first reply audio reaching Vapi's turn-taking buffer. + * It includes the wait to collect enough text for the first voice request (set by `voice.chunkPlan`), the voice provider's time to first audio, and any sample-rate conversion. 0 when it was not measured on this turn. + */ voiceLatency?: number | undefined; - /** This is the transcriber latency from the user speech. */ + /** + * This is the time in milliseconds from the user's last voice activity signal, normally the end of speech, to the transcriber returning the words of that speech. + * 0 both when it was not measured (listed in `unmeasured`) and when the words arrived before that signal. + */ transcriberLatency?: number | undefined; - /** This is the endpointing latency. */ + /** + * This is the time in milliseconds from the transcriber returning the words to Vapi deciding the turn is over and sending it to the model. + * 0 when the reply was not triggered by sending a user transcript to the model. + */ endpointingLatency?: number | undefined; - /** This is the latency for the whole turn. */ + /** + * This is the time in milliseconds from the user's last voice activity signal to Vapi starting to send the assistant's reply audio. + * It is computed as `transcriberLatency` + `endpointingLatency` + the time from that decision to the reply starting, so it is not a real measurement either when `unmeasured` lists `transcriber`: the total then leaves that interval out (0) or counts it from a speech start. `modelLatency` and `voiceLatency` fall inside the last part, so the fields do not add up to this value. + */ turnLatency?: number | undefined; } diff --git a/src/api/types/TurnLatencyUnmeasuredItem.ts b/src/api/types/TurnLatencyUnmeasuredItem.ts new file mode 100644 index 00000000..351bc07e --- /dev/null +++ b/src/api/types/TurnLatencyUnmeasuredItem.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const TurnLatencyUnmeasuredItem = { + Transcriber: "transcriber", + Endpointing: "endpointing", + Model: "model", + Voice: "voice", +} as const; +export type TurnLatencyUnmeasuredItem = (typeof TurnLatencyUnmeasuredItem)[keyof typeof TurnLatencyUnmeasuredItem]; diff --git a/src/api/types/UpdateAssistantDraftDto.ts b/src/api/types/UpdateAssistantDraftDto.ts index 3b305816..13d3b769 100644 --- a/src/api/types/UpdateAssistantDraftDto.ts +++ b/src/api/types/UpdateAssistantDraftDto.ts @@ -44,6 +44,7 @@ export interface UpdateAssistantDraftDto { maxDurationSeconds?: number | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.UpdateAssistantDraftDtoBackgroundSound | undefined; @@ -77,11 +78,7 @@ export interface UpdateAssistantDraftDto { * If unspecified, it will hang up. */ voicemailMessage?: string | undefined; - /** - * This is the message that the assistant will say if it ends the call. - * - * If unspecified, it will hang up without saying anything. - */ + /** The message the assistant says when it ends the call with the Hang Up tool (`endCall`) and that tool has no messages. If the tool has a `request-start` message, the assistant says that message instead. If this field is unspecified or empty, the assistant says "Goodbye" in the transcriber's language. When an assistant hook runs `endCall`, this field isn't used and the assistant says "Goodbye" in English. */ endCallMessage?: string | undefined; /** This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive. */ endCallPhrases?: string[] | undefined; diff --git a/src/api/types/UpdateAssistantDraftDtoBackgroundSound.ts b/src/api/types/UpdateAssistantDraftDtoBackgroundSound.ts index 58c9e15d..8ff94688 100644 --- a/src/api/types/UpdateAssistantDraftDtoBackgroundSound.ts +++ b/src/api/types/UpdateAssistantDraftDtoBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type UpdateAssistantDraftDtoBackgroundSound = Vapi.UpdateAssistantDraftDtoBackgroundSoundZero | string; diff --git a/src/api/types/UpdateAssistantDraftDtoBackgroundSoundZero.ts b/src/api/types/UpdateAssistantDraftDtoBackgroundSoundZero.ts index b0aea161..670e6712 100644 --- a/src/api/types/UpdateAssistantDraftDtoBackgroundSoundZero.ts +++ b/src/api/types/UpdateAssistantDraftDtoBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const UpdateAssistantDraftDtoBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type UpdateAssistantDraftDtoBackgroundSoundZero = (typeof UpdateAssistantDraftDtoBackgroundSoundZero)[keyof typeof UpdateAssistantDraftDtoBackgroundSoundZero]; diff --git a/src/api/types/UpdateAssistantDraftDtoCredentialsItem.ts b/src/api/types/UpdateAssistantDraftDtoCredentialsItem.ts index dceb5add..0495ad2b 100644 --- a/src/api/types/UpdateAssistantDraftDtoCredentialsItem.ts +++ b/src/api/types/UpdateAssistantDraftDtoCredentialsItem.ts @@ -50,6 +50,7 @@ export type UpdateAssistantDraftDtoCredentialsItem = | Vapi.UpdateAssistantDraftDtoCredentialsItem.Mistral | Vapi.UpdateAssistantDraftDtoCredentialsItem.Speechmatics | Vapi.UpdateAssistantDraftDtoCredentialsItem.Soniox + | Vapi.UpdateAssistantDraftDtoCredentialsItem.Reson8 | Vapi.UpdateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.UpdateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.UpdateAssistantDraftDtoCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace UpdateAssistantDraftDtoCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace UpdateAssistantDraftDtoCredentialsItem { | Vapi.UpdateAssistantDraftDtoCredentialsItem.Mistral | Vapi.UpdateAssistantDraftDtoCredentialsItem.Speechmatics | Vapi.UpdateAssistantDraftDtoCredentialsItem.Soniox + | Vapi.UpdateAssistantDraftDtoCredentialsItem.Reson8 | Vapi.UpdateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.UpdateAssistantDraftDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.UpdateAssistantDraftDtoCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/UpdateAssistantDraftDtoTranscriber.ts b/src/api/types/UpdateAssistantDraftDtoTranscriber.ts index 516448af..30972d6a 100644 --- a/src/api/types/UpdateAssistantDraftDtoTranscriber.ts +++ b/src/api/types/UpdateAssistantDraftDtoTranscriber.ts @@ -19,6 +19,7 @@ export type UpdateAssistantDraftDtoTranscriber = | Vapi.UpdateAssistantDraftDtoTranscriber.Cartesia | Vapi.UpdateAssistantDraftDtoTranscriber.Soniox | Vapi.UpdateAssistantDraftDtoTranscriber.Xai + | Vapi.UpdateAssistantDraftDtoTranscriber.Reson8 | Vapi.UpdateAssistantDraftDtoTranscriber.Vapi; export namespace UpdateAssistantDraftDtoTranscriber { @@ -74,6 +75,10 @@ export namespace UpdateAssistantDraftDtoTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/UpdateAssistantDraftDtoVoice.ts b/src/api/types/UpdateAssistantDraftDtoVoice.ts index f1f7ad87..60bb8852 100644 --- a/src/api/types/UpdateAssistantDraftDtoVoice.ts +++ b/src/api/types/UpdateAssistantDraftDtoVoice.ts @@ -19,7 +19,6 @@ export type UpdateAssistantDraftDtoVoice = | Vapi.UpdateAssistantDraftDtoVoice.Wellsaid | Vapi.UpdateAssistantDraftDtoVoice.RimeAi | Vapi.UpdateAssistantDraftDtoVoice.SmallestAi - | Vapi.UpdateAssistantDraftDtoVoice.Tavus | Vapi.UpdateAssistantDraftDtoVoice.Vapi | Vapi.UpdateAssistantDraftDtoVoice.Sesame | Vapi.UpdateAssistantDraftDtoVoice.Inworld @@ -80,10 +79,6 @@ export namespace UpdateAssistantDraftDtoVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/UpdateCodeToolDto.ts b/src/api/types/UpdateCodeToolDto.ts index 8fb989a8..64fe3aa3 100644 --- a/src/api/types/UpdateCodeToolDto.ts +++ b/src/api/types/UpdateCodeToolDto.ts @@ -5,8 +5,6 @@ import type * as Vapi from "../index.js"; export interface UpdateCodeToolDto { /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.UpdateCodeToolDtoMessagesItem[] | undefined; - /** The type of tool. "code" for Code tool. */ - type?: Vapi.UpdateCodeToolDtoType | undefined; /** * This determines if the tool is async. * diff --git a/src/api/types/UpdateCodeToolDtoType.ts b/src/api/types/UpdateCodeToolDtoType.ts deleted file mode 100644 index ace3d3c9..00000000 --- a/src/api/types/UpdateCodeToolDtoType.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -/** The type of tool. "code" for Code tool. */ -export const UpdateCodeToolDtoType = { - Code: "code", -} as const; -export type UpdateCodeToolDtoType = (typeof UpdateCodeToolDtoType)[keyof typeof UpdateCodeToolDtoType]; diff --git a/src/api/types/UpdateLangfuseCredentialDto.ts b/src/api/types/UpdateLangfuseCredentialDto.ts index 34dffd94..ac1ab388 100644 --- a/src/api/types/UpdateLangfuseCredentialDto.ts +++ b/src/api/types/UpdateLangfuseCredentialDto.ts @@ -10,6 +10,8 @@ export interface UpdateLangfuseCredentialDto { apiKey?: string | undefined; /** The host URL for Langfuse project. Eg: https://cloud.langfuse.com */ apiUrl?: string | undefined; + /** The semver version of your Langfuse server, e.g. 3.63.0, as its /api/public/health endpoint reports it. Optional. */ + serverVersion?: string | undefined; /** This is the name of credential. This is just for your reference. */ name?: string | undefined; } diff --git a/src/api/types/UpdateLineInsightFromCallTableDtoQueriesItem.ts b/src/api/types/UpdateLineInsightFromCallTableDtoQueriesItem.ts index 9d996d63..02ace85a 100644 --- a/src/api/types/UpdateLineInsightFromCallTableDtoQueriesItem.ts +++ b/src/api/types/UpdateLineInsightFromCallTableDtoQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type UpdateLineInsightFromCallTableDtoQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/UpdatePieInsightFromCallTableDtoQueriesItem.ts b/src/api/types/UpdatePieInsightFromCallTableDtoQueriesItem.ts index 388a37a5..362a4018 100644 --- a/src/api/types/UpdatePieInsightFromCallTableDtoQueriesItem.ts +++ b/src/api/types/UpdatePieInsightFromCallTableDtoQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type UpdatePieInsightFromCallTableDtoQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/UpdateReson8CredentialDto.ts b/src/api/types/UpdateReson8CredentialDto.ts new file mode 100644 index 00000000..017fd407 --- /dev/null +++ b/src/api/types/UpdateReson8CredentialDto.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +export interface UpdateReson8CredentialDto { + provider?: Vapi.UpdateReson8CredentialDtoProvider | undefined; + /** This is not returned in the API. */ + apiKey?: string | undefined; + /** This is the name of credential. This is just for your reference. */ + name?: string | undefined; +} diff --git a/src/api/types/UpdateReson8CredentialDtoProvider.ts b/src/api/types/UpdateReson8CredentialDtoProvider.ts new file mode 100644 index 00000000..3dcd5dab --- /dev/null +++ b/src/api/types/UpdateReson8CredentialDtoProvider.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const UpdateReson8CredentialDtoProvider = { + Reson8: "reson8", +} as const; +export type UpdateReson8CredentialDtoProvider = + (typeof UpdateReson8CredentialDtoProvider)[keyof typeof UpdateReson8CredentialDtoProvider]; diff --git a/src/api/types/UpdateTextInsightFromCallTableDtoQueriesItem.ts b/src/api/types/UpdateTextInsightFromCallTableDtoQueriesItem.ts index 86700593..2b878353 100644 --- a/src/api/types/UpdateTextInsightFromCallTableDtoQueriesItem.ts +++ b/src/api/types/UpdateTextInsightFromCallTableDtoQueriesItem.ts @@ -5,4 +5,5 @@ import type * as Vapi from "../index.js"; export type UpdateTextInsightFromCallTableDtoQueriesItem = | Vapi.JsonQueryOnCallTableWithStringTypeColumn | Vapi.JsonQueryOnCallTableWithNumberTypeColumn - | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn; + | Vapi.JsonQueryOnCallTableWithStructuredOutputColumn + | Vapi.JsonQueryOnEventsTable; diff --git a/src/api/types/UpdateTrieveKnowledgeBaseDto.ts b/src/api/types/UpdateTrieveKnowledgeBaseDto.ts deleted file mode 100644 index e2b26c79..00000000 --- a/src/api/types/UpdateTrieveKnowledgeBaseDto.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export type UpdateTrieveKnowledgeBaseDto = unknown; diff --git a/src/api/types/UpdateWorkflowDto.ts b/src/api/types/UpdateWorkflowDto.ts index 06a26e11..514e79b3 100644 --- a/src/api/types/UpdateWorkflowDto.ts +++ b/src/api/types/UpdateWorkflowDto.ts @@ -30,6 +30,7 @@ export interface UpdateWorkflowDto { observabilityPlan?: Vapi.LangfuseObservabilityPlan | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.UpdateWorkflowDtoBackgroundSound | undefined; diff --git a/src/api/types/UpdateWorkflowDtoBackgroundSound.ts b/src/api/types/UpdateWorkflowDtoBackgroundSound.ts index 8244482d..73b772d3 100644 --- a/src/api/types/UpdateWorkflowDtoBackgroundSound.ts +++ b/src/api/types/UpdateWorkflowDtoBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type UpdateWorkflowDtoBackgroundSound = Vapi.UpdateWorkflowDtoBackgroundSoundZero | string; diff --git a/src/api/types/UpdateWorkflowDtoBackgroundSoundZero.ts b/src/api/types/UpdateWorkflowDtoBackgroundSoundZero.ts index 56821636..6332d695 100644 --- a/src/api/types/UpdateWorkflowDtoBackgroundSoundZero.ts +++ b/src/api/types/UpdateWorkflowDtoBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const UpdateWorkflowDtoBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type UpdateWorkflowDtoBackgroundSoundZero = (typeof UpdateWorkflowDtoBackgroundSoundZero)[keyof typeof UpdateWorkflowDtoBackgroundSoundZero]; diff --git a/src/api/types/UpdateWorkflowDtoCredentialsItem.ts b/src/api/types/UpdateWorkflowDtoCredentialsItem.ts index 0fb3aa80..62590ce6 100644 --- a/src/api/types/UpdateWorkflowDtoCredentialsItem.ts +++ b/src/api/types/UpdateWorkflowDtoCredentialsItem.ts @@ -50,6 +50,7 @@ export type UpdateWorkflowDtoCredentialsItem = | Vapi.UpdateWorkflowDtoCredentialsItem.Mistral | Vapi.UpdateWorkflowDtoCredentialsItem.Speechmatics | Vapi.UpdateWorkflowDtoCredentialsItem.Soniox + | Vapi.UpdateWorkflowDtoCredentialsItem.Reson8 | Vapi.UpdateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.UpdateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.UpdateWorkflowDtoCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace UpdateWorkflowDtoCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace UpdateWorkflowDtoCredentialsItem { | Vapi.UpdateWorkflowDtoCredentialsItem.Mistral | Vapi.UpdateWorkflowDtoCredentialsItem.Speechmatics | Vapi.UpdateWorkflowDtoCredentialsItem.Soniox + | Vapi.UpdateWorkflowDtoCredentialsItem.Reson8 | Vapi.UpdateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Client | Vapi.UpdateWorkflowDtoCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.UpdateWorkflowDtoCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/UpdateWorkflowDtoTranscriber.ts b/src/api/types/UpdateWorkflowDtoTranscriber.ts index eb854922..6be0e90e 100644 --- a/src/api/types/UpdateWorkflowDtoTranscriber.ts +++ b/src/api/types/UpdateWorkflowDtoTranscriber.ts @@ -21,6 +21,7 @@ export type UpdateWorkflowDtoTranscriber = | Vapi.UpdateWorkflowDtoTranscriber.Cartesia | Vapi.UpdateWorkflowDtoTranscriber.Soniox | Vapi.UpdateWorkflowDtoTranscriber.Xai + | Vapi.UpdateWorkflowDtoTranscriber.Reson8 | Vapi.UpdateWorkflowDtoTranscriber.Vapi; export namespace UpdateWorkflowDtoTranscriber { @@ -76,6 +77,10 @@ export namespace UpdateWorkflowDtoTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/UpdateWorkflowDtoVoice.ts b/src/api/types/UpdateWorkflowDtoVoice.ts index c0bc263b..fb1afeda 100644 --- a/src/api/types/UpdateWorkflowDtoVoice.ts +++ b/src/api/types/UpdateWorkflowDtoVoice.ts @@ -21,7 +21,6 @@ export type UpdateWorkflowDtoVoice = | Vapi.UpdateWorkflowDtoVoice.Wellsaid | Vapi.UpdateWorkflowDtoVoice.RimeAi | Vapi.UpdateWorkflowDtoVoice.SmallestAi - | Vapi.UpdateWorkflowDtoVoice.Tavus | Vapi.UpdateWorkflowDtoVoice.Vapi | Vapi.UpdateWorkflowDtoVoice.Sesame | Vapi.UpdateWorkflowDtoVoice.Inworld @@ -82,10 +81,6 @@ export namespace UpdateWorkflowDtoVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/User.ts b/src/api/types/User.ts deleted file mode 100644 index c589f2f5..00000000 --- a/src/api/types/User.ts +++ /dev/null @@ -1,14 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -export interface User { - /** This is the unique identifier for the profile or user. */ - id: string; - /** This is the ISO 8601 date-time string of when the profile was created. */ - createdAt: string; - /** This is the ISO 8601 date-time string of when the profile was last updated. */ - updatedAt: string; - /** This is the email of the user that is associated with the profile. */ - email: string; - /** This is the full name of the user that is associated with the profile. */ - fullName?: string | undefined; -} diff --git a/src/api/types/UserWithRole.ts b/src/api/types/UserWithRole.ts new file mode 100644 index 00000000..d6ab6383 --- /dev/null +++ b/src/api/types/UserWithRole.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 UserWithRole { + /** This is the user's role in the org: a built-in role, the HIPAA special role, or a custom WorkOS role slug prefixed with `org-`. */ + role: Vapi.UserWithRoleRole; + /** This is the ISO 8601 date-time string of the user's most recent sign-in to the org's identity provider (WorkOS). It is a property of the user, not of this org membership, so a sign-in to another WorkOS org counts. Only returned to org admins; absent when the requester is not an admin, no sign-in has been recorded, or the org is not linked to WorkOS. */ + lastActiveAt?: string | undefined; + /** This is the unique identifier for the profile or user. */ + id: string; + /** This is the ISO 8601 date-time string of when the profile was created. */ + createdAt: string; + /** This is the ISO 8601 date-time string of when the profile was last updated. */ + updatedAt: string; + /** This is the email of the user that is associated with the profile. */ + email: string; + /** This is the full name of the user that is associated with the profile. */ + fullName?: string | undefined; +} diff --git a/src/api/types/UserWithRoleRole.ts b/src/api/types/UserWithRoleRole.ts new file mode 100644 index 00000000..37b827bb --- /dev/null +++ b/src/api/types/UserWithRoleRole.ts @@ -0,0 +1,8 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Vapi from "../index.js"; + +/** + * This is the user's role in the org: a built-in role, the HIPAA special role, or a custom WorkOS role slug prefixed with `org-`. + */ +export type UserWithRoleRole = Vapi.UserWithRoleRoleZero | string; diff --git a/src/api/types/UserWithRoleRoleZero.ts b/src/api/types/UserWithRoleRoleZero.ts new file mode 100644 index 00000000..d4a892b4 --- /dev/null +++ b/src/api/types/UserWithRoleRoleZero.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const UserWithRoleRoleZero = { + Admin: "admin", + Editor: "editor", + Viewer: "viewer", + HipaaSpecial: "hipaa-special", +} as const; +export type UserWithRoleRoleZero = (typeof UserWithRoleRoleZero)[keyof typeof UserWithRoleRoleZero]; diff --git a/src/api/resources/assistants/client/requests/ValidateBackgroundSoundUrlDto.ts b/src/api/types/ValidateBackgroundSoundUrlDto.ts similarity index 75% rename from src/api/resources/assistants/client/requests/ValidateBackgroundSoundUrlDto.ts rename to src/api/types/ValidateBackgroundSoundUrlDto.ts index b49f0207..cface6c5 100644 --- a/src/api/resources/assistants/client/requests/ValidateBackgroundSoundUrlDto.ts +++ b/src/api/types/ValidateBackgroundSoundUrlDto.ts @@ -1,11 +1,5 @@ // This file was auto-generated by Fern from our API Definition. -/** - * @example - * { - * url: "https://example.com/my-sound.mp3" - * } - */ export interface ValidateBackgroundSoundUrlDto { /** This is the background sound URL to validate. The server performs a ranged request and checks that the URL serves a live media file. */ url: string; diff --git a/src/api/types/VapiWebCallTransport.ts b/src/api/types/VapiWebCallTransport.ts index 574bb134..e2ecf177 100644 --- a/src/api/types/VapiWebCallTransport.ts +++ b/src/api/types/VapiWebCallTransport.ts @@ -19,6 +19,10 @@ export interface VapiWebCallTransport { * recording automatically server-side, which is more reliable than the * client starting it after joining. Set by the server; only present when * video recording is enabled. + * + * With `videoRecordingStartMode: 'server'`, joining with the token doesn't + * start the recording: Vapi starts it once the user joins, and the client + * must not start it either. */ callToken?: string | undefined; /** This is the URL of the web call. */ diff --git a/src/api/types/VoicemailTool.ts b/src/api/types/VoicemailTool.ts index 6106422e..6fde2184 100644 --- a/src/api/types/VoicemailTool.ts +++ b/src/api/types/VoicemailTool.ts @@ -7,6 +7,8 @@ import type * as Vapi from "../index.js"; */ export interface VoicemailTool { latestVersion?: (string | null) | undefined; + /** Display-only baseline label returned by the tool list before a version is stored. Fetch version history to initialize it before using it as a pin. */ + baselineVersion?: (string | null) | undefined; /** Messages spoken while the tool is running. Multiple request-start messages are variants. For request-response-delayed, same timing means variants and different timings mean staged updates. */ messages?: Vapi.VoicemailToolMessagesItem[] | undefined; /** diff --git a/src/api/types/Workflow.ts b/src/api/types/Workflow.ts index 0ca36a9d..a68b2bb2 100644 --- a/src/api/types/Workflow.ts +++ b/src/api/types/Workflow.ts @@ -30,6 +30,7 @@ export interface Workflow { observabilityPlan?: Vapi.LangfuseObservabilityPlan | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.WorkflowBackgroundSound | undefined; diff --git a/src/api/types/WorkflowAnthropicBedrockModel.ts b/src/api/types/WorkflowAnthropicBedrockModel.ts index 1dc67654..7a5fda39 100644 --- a/src/api/types/WorkflowAnthropicBedrockModel.ts +++ b/src/api/types/WorkflowAnthropicBedrockModel.ts @@ -9,12 +9,12 @@ export interface WorkflowAnthropicBedrockModel { /** * These are the messages used to customize the prompt used for structured output extraction. * - * When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - * - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) + * When provided, these messages replace the default prompts. For text extraction, message contents support LiquidJS templating with the following variables: + * - `{{transcript}}`, `{{messages}}`, or `{{messagesWithConfidence}}` to reference the conversation (one is required) * - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) * - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` * - * `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results, but omits caller transcription-confidence fields. For text extraction, `{{messagesWithConfidence}}` includes the original message history with transcription confidence for outputs that explicitly need it. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. * * If not provided, default system and user prompts are used. */ diff --git a/src/api/types/WorkflowAnthropicBedrockModelModel.ts b/src/api/types/WorkflowAnthropicBedrockModelModel.ts index 30e2175f..08bb58ef 100644 --- a/src/api/types/WorkflowAnthropicBedrockModelModel.ts +++ b/src/api/types/WorkflowAnthropicBedrockModelModel.ts @@ -16,6 +16,8 @@ export const WorkflowAnthropicBedrockModelModel = { ClaudeSonnet4520250929: "claude-sonnet-4-5-20250929", ClaudeSonnet46: "claude-sonnet-4-6", ClaudeHaiku4520251001: "claude-haiku-4-5-20251001", + ClaudeHaiku55: "claude-haiku-5-5", + GlobalAnthropicClaudeSonnet46: "global.anthropic.claude-sonnet-4-6", GlobalAnthropicClaudeHaiku4520251001V10: "global.anthropic.claude-haiku-4-5-20251001-v1:0", } as const; export type WorkflowAnthropicBedrockModelModel = diff --git a/src/api/types/WorkflowAnthropicModel.ts b/src/api/types/WorkflowAnthropicModel.ts index d5183027..c2838f37 100644 --- a/src/api/types/WorkflowAnthropicModel.ts +++ b/src/api/types/WorkflowAnthropicModel.ts @@ -9,12 +9,12 @@ export interface WorkflowAnthropicModel { /** * These are the messages used to customize the prompt used for structured output extraction. * - * When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - * - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) + * When provided, these messages replace the default prompts. For text extraction, message contents support LiquidJS templating with the following variables: + * - `{{transcript}}`, `{{messages}}`, or `{{messagesWithConfidence}}` to reference the conversation (one is required) * - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) * - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` * - * `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results, but omits caller transcription-confidence fields. For text extraction, `{{messagesWithConfidence}}` includes the original message history with transcription confidence for outputs that explicitly need it. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. * * If not provided, default system and user prompts are used. */ diff --git a/src/api/types/WorkflowAnthropicModelModel.ts b/src/api/types/WorkflowAnthropicModelModel.ts index f37f78cf..aaf75f22 100644 --- a/src/api/types/WorkflowAnthropicModelModel.ts +++ b/src/api/types/WorkflowAnthropicModelModel.ts @@ -17,6 +17,7 @@ export const WorkflowAnthropicModelModel = { ClaudeSonnet46: "claude-sonnet-4-6", ClaudeSonnet5: "claude-sonnet-5", ClaudeHaiku4520251001: "claude-haiku-4-5-20251001", + ClaudeHaiku55: "claude-haiku-5-5", } as const; export type WorkflowAnthropicModelModel = (typeof WorkflowAnthropicModelModel)[keyof typeof WorkflowAnthropicModelModel]; diff --git a/src/api/types/WorkflowBackgroundSound.ts b/src/api/types/WorkflowBackgroundSound.ts index f2dc253c..1c2b3fb3 100644 --- a/src/api/types/WorkflowBackgroundSound.ts +++ b/src/api/types/WorkflowBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type WorkflowBackgroundSound = Vapi.WorkflowBackgroundSoundZero | string; diff --git a/src/api/types/WorkflowBackgroundSoundZero.ts b/src/api/types/WorkflowBackgroundSoundZero.ts index 9bdff16e..7d5b3b55 100644 --- a/src/api/types/WorkflowBackgroundSoundZero.ts +++ b/src/api/types/WorkflowBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const WorkflowBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type WorkflowBackgroundSoundZero = (typeof WorkflowBackgroundSoundZero)[keyof typeof WorkflowBackgroundSoundZero]; diff --git a/src/api/types/WorkflowCredentialsItem.ts b/src/api/types/WorkflowCredentialsItem.ts index 442de489..b2ce612c 100644 --- a/src/api/types/WorkflowCredentialsItem.ts +++ b/src/api/types/WorkflowCredentialsItem.ts @@ -50,6 +50,7 @@ export type WorkflowCredentialsItem = | Vapi.WorkflowCredentialsItem.Mistral | Vapi.WorkflowCredentialsItem.Speechmatics | Vapi.WorkflowCredentialsItem.Soniox + | Vapi.WorkflowCredentialsItem.Reson8 | Vapi.WorkflowCredentialsItem.GoogleCalendarOauth2Client | Vapi.WorkflowCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.WorkflowCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace WorkflowCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace WorkflowCredentialsItem { | Vapi.WorkflowCredentialsItem.Mistral | Vapi.WorkflowCredentialsItem.Speechmatics | Vapi.WorkflowCredentialsItem.Soniox + | Vapi.WorkflowCredentialsItem.Reson8 | Vapi.WorkflowCredentialsItem.GoogleCalendarOauth2Client | Vapi.WorkflowCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.WorkflowCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/WorkflowCustomModel.ts b/src/api/types/WorkflowCustomModel.ts index 05634a34..9fed277f 100644 --- a/src/api/types/WorkflowCustomModel.ts +++ b/src/api/types/WorkflowCustomModel.ts @@ -9,12 +9,12 @@ export interface WorkflowCustomModel { /** * These are the messages used to customize the prompt used for structured output extraction. * - * When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - * - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) + * When provided, these messages replace the default prompts. For text extraction, message contents support LiquidJS templating with the following variables: + * - `{{transcript}}`, `{{messages}}`, or `{{messagesWithConfidence}}` to reference the conversation (one is required) * - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) * - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` * - * `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results, but omits caller transcription-confidence fields. For text extraction, `{{messagesWithConfidence}}` includes the original message history with transcription confidence for outputs that explicitly need it. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. * * If not provided, default system and user prompts are used. */ diff --git a/src/api/types/WorkflowGoogleModel.ts b/src/api/types/WorkflowGoogleModel.ts index eaabc302..659adb10 100644 --- a/src/api/types/WorkflowGoogleModel.ts +++ b/src/api/types/WorkflowGoogleModel.ts @@ -9,12 +9,12 @@ export interface WorkflowGoogleModel { /** * These are the messages used to customize the prompt used for structured output extraction. * - * When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - * - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) + * When provided, these messages replace the default prompts. For text extraction, message contents support LiquidJS templating with the following variables: + * - `{{transcript}}`, `{{messages}}`, or `{{messagesWithConfidence}}` to reference the conversation (one is required) * - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) * - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` * - * `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results, but omits caller transcription-confidence fields. For text extraction, `{{messagesWithConfidence}}` includes the original message history with transcription confidence for outputs that explicitly need it. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. * * If not provided, default system and user prompts are used. */ diff --git a/src/api/types/WorkflowGoogleModelModel.ts b/src/api/types/WorkflowGoogleModelModel.ts index faa55aaa..8469571e 100644 --- a/src/api/types/WorkflowGoogleModelModel.ts +++ b/src/api/types/WorkflowGoogleModelModel.ts @@ -2,6 +2,7 @@ /** This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b */ export const WorkflowGoogleModelModel = { + Gemini38Flash: "gemini-3.8-flash", Gemini35Flash: "gemini-3.5-flash", Gemini31FlashLite: "gemini-3.1-flash-lite", Gemini3FlashPreview: "gemini-3-flash-preview", diff --git a/src/api/types/WorkflowOpenAiModel.ts b/src/api/types/WorkflowOpenAiModel.ts index c0797a8a..ce10beb6 100644 --- a/src/api/types/WorkflowOpenAiModel.ts +++ b/src/api/types/WorkflowOpenAiModel.ts @@ -9,12 +9,12 @@ export interface WorkflowOpenAiModel { /** * These are the messages used to customize the prompt used for structured output extraction. * - * When provided, these messages replace the default prompts. Message contents support LiquidJS templating with the following variables: - * - `{{transcript}}` or `{{messages}}` to reference the conversation (one is required) + * When provided, these messages replace the default prompts. For text extraction, message contents support LiquidJS templating with the following variables: + * - `{{transcript}}`, `{{messages}}`, or `{{messagesWithConfidence}}` to reference the conversation (one is required) * - `{{structuredOutput.name}}`, `{{structuredOutput.description}}`, or `{{structuredOutput.schema}}` to reference the structured output definition (one is required) * - `{{systemPrompt}}`, `{{callEndedReason}}`, `{{duration}}`, `{{startedAt}}`, `{{endedAt}}`, and any `assistantOverrides.variableValues` * - * `{{messages}}` is the full message history including tool calls; `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. + * In structured outputs, `{{messages}}` includes conversation text and tool calls/results, but omits caller transcription-confidence fields. For text extraction, `{{messagesWithConfidence}}` includes the original message history with transcription confidence for outputs that explicitly need it. These variables also apply in structured-output schema descriptions. Audio-targeted (`messages-with-audio`) extraction ignores custom messages. Stored call artifacts and API messages retain their confidence data. `{{transcript}}` is the spoken text only, which uses significantly fewer tokens. * * If not provided, default system and user prompts are used. */ @@ -26,6 +26,14 @@ export interface WorkflowOpenAiModel { * 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/. */ model: Vapi.WorkflowOpenAiModelModel; + /** + * This is the reasoning effort for structured output extraction. It applies to the primary extraction attempt only; the GPT-4.1 and Gemini fallbacks run without it. Other features that use this model type ignore it. + * + * Only reasoning models accept it, and each accepts only the efforts OpenAI supports for it (for example `none` and `xhigh` on gpt-5.6, `minimal` on gpt-5). When unset, OpenAI's default effort for the model applies, except on GPT-6 models, which Vapi sends with `none`. + * + * Reasoning tokens are billed as output tokens. + */ + reasoningEffort?: Vapi.WorkflowOpenAiModelReasoningEffort | undefined; /** This is the temperature of the model. */ temperature?: number | undefined; /** This is the max tokens of the model. */ diff --git a/src/api/types/WorkflowOpenAiModelReasoningEffort.ts b/src/api/types/WorkflowOpenAiModelReasoningEffort.ts new file mode 100644 index 00000000..b6db2b43 --- /dev/null +++ b/src/api/types/WorkflowOpenAiModelReasoningEffort.ts @@ -0,0 +1,19 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * This is the reasoning effort for structured output extraction. It applies to the primary extraction attempt only; the GPT-4.1 and Gemini fallbacks run without it. Other features that use this model type ignore it. + * + * Only reasoning models accept it, and each accepts only the efforts OpenAI supports for it (for example `none` and `xhigh` on gpt-5.6, `minimal` on gpt-5). When unset, OpenAI's default effort for the model applies, except on GPT-6 models, which Vapi sends with `none`. + * + * Reasoning tokens are billed as output tokens. + */ +export const WorkflowOpenAiModelReasoningEffort = { + Minimal: "minimal", + None: "none", + Low: "low", + Medium: "medium", + High: "high", + Xhigh: "xhigh", +} as const; +export type WorkflowOpenAiModelReasoningEffort = + (typeof WorkflowOpenAiModelReasoningEffort)[keyof typeof WorkflowOpenAiModelReasoningEffort]; diff --git a/src/api/types/WorkflowTranscriber.ts b/src/api/types/WorkflowTranscriber.ts index 749eadaf..939386e5 100644 --- a/src/api/types/WorkflowTranscriber.ts +++ b/src/api/types/WorkflowTranscriber.ts @@ -21,6 +21,7 @@ export type WorkflowTranscriber = | Vapi.WorkflowTranscriber.Cartesia | Vapi.WorkflowTranscriber.Soniox | Vapi.WorkflowTranscriber.Xai + | Vapi.WorkflowTranscriber.Reson8 | Vapi.WorkflowTranscriber.Vapi; export namespace WorkflowTranscriber { @@ -76,6 +77,10 @@ export namespace WorkflowTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/WorkflowUserEditable.ts b/src/api/types/WorkflowUserEditable.ts index 6468c1c3..0cd9bf14 100644 --- a/src/api/types/WorkflowUserEditable.ts +++ b/src/api/types/WorkflowUserEditable.ts @@ -30,6 +30,7 @@ export interface WorkflowUserEditable { observabilityPlan?: Vapi.LangfuseObservabilityPlan | undefined; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ backgroundSound?: Vapi.WorkflowUserEditableBackgroundSound | undefined; diff --git a/src/api/types/WorkflowUserEditableBackgroundSound.ts b/src/api/types/WorkflowUserEditableBackgroundSound.ts index dde0d6a4..d31a0a2d 100644 --- a/src/api/types/WorkflowUserEditableBackgroundSound.ts +++ b/src/api/types/WorkflowUserEditableBackgroundSound.ts @@ -4,6 +4,7 @@ import type * as Vapi from "../index.js"; /** * This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. + * Bundled sounds: 'office', 'white-noise', 'city', 'crowd' and 'farm'. GPT Live assistants don't play 'office'. * You can also provide a custom sound by providing a URL to an audio file. */ export type WorkflowUserEditableBackgroundSound = Vapi.WorkflowUserEditableBackgroundSoundZero | string; diff --git a/src/api/types/WorkflowUserEditableBackgroundSoundZero.ts b/src/api/types/WorkflowUserEditableBackgroundSoundZero.ts index f239e1b0..59d6819d 100644 --- a/src/api/types/WorkflowUserEditableBackgroundSoundZero.ts +++ b/src/api/types/WorkflowUserEditableBackgroundSoundZero.ts @@ -3,6 +3,10 @@ export const WorkflowUserEditableBackgroundSoundZero = { Off: "off", Office: "office", + WhiteNoise: "white-noise", + City: "city", + Crowd: "crowd", + Farm: "farm", } as const; export type WorkflowUserEditableBackgroundSoundZero = (typeof WorkflowUserEditableBackgroundSoundZero)[keyof typeof WorkflowUserEditableBackgroundSoundZero]; diff --git a/src/api/types/WorkflowUserEditableCredentialsItem.ts b/src/api/types/WorkflowUserEditableCredentialsItem.ts index a24318f3..52922d12 100644 --- a/src/api/types/WorkflowUserEditableCredentialsItem.ts +++ b/src/api/types/WorkflowUserEditableCredentialsItem.ts @@ -50,6 +50,7 @@ export type WorkflowUserEditableCredentialsItem = | Vapi.WorkflowUserEditableCredentialsItem.Mistral | Vapi.WorkflowUserEditableCredentialsItem.Speechmatics | Vapi.WorkflowUserEditableCredentialsItem.Soniox + | Vapi.WorkflowUserEditableCredentialsItem.Reson8 | Vapi.WorkflowUserEditableCredentialsItem.GoogleCalendarOauth2Client | Vapi.WorkflowUserEditableCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.WorkflowUserEditableCredentialsItem.GoogleSheetsOauth2Authorization @@ -250,6 +251,10 @@ export namespace WorkflowUserEditableCredentialsItem { provider: "soniox"; } + export interface Reson8 extends Vapi.CreateReson8CredentialDto { + provider: "reson8"; + } + export interface GoogleCalendarOauth2Client extends Vapi.CreateGoogleCalendarOAuth2ClientCredentialDto { provider: "google.calendar.oauth2-client"; } @@ -339,6 +344,7 @@ export namespace WorkflowUserEditableCredentialsItem { | Vapi.WorkflowUserEditableCredentialsItem.Mistral | Vapi.WorkflowUserEditableCredentialsItem.Speechmatics | Vapi.WorkflowUserEditableCredentialsItem.Soniox + | Vapi.WorkflowUserEditableCredentialsItem.Reson8 | Vapi.WorkflowUserEditableCredentialsItem.GoogleCalendarOauth2Client | Vapi.WorkflowUserEditableCredentialsItem.GoogleCalendarOauth2Authorization | Vapi.WorkflowUserEditableCredentialsItem.GoogleSheetsOauth2Authorization diff --git a/src/api/types/WorkflowUserEditableTranscriber.ts b/src/api/types/WorkflowUserEditableTranscriber.ts index 62d92f2e..de939cd9 100644 --- a/src/api/types/WorkflowUserEditableTranscriber.ts +++ b/src/api/types/WorkflowUserEditableTranscriber.ts @@ -21,6 +21,7 @@ export type WorkflowUserEditableTranscriber = | Vapi.WorkflowUserEditableTranscriber.Cartesia | Vapi.WorkflowUserEditableTranscriber.Soniox | Vapi.WorkflowUserEditableTranscriber.Xai + | Vapi.WorkflowUserEditableTranscriber.Reson8 | Vapi.WorkflowUserEditableTranscriber.Vapi; export namespace WorkflowUserEditableTranscriber { @@ -76,6 +77,10 @@ export namespace WorkflowUserEditableTranscriber { provider: "xai"; } + export interface Reson8 extends Vapi.Reson8Transcriber { + provider: "reson8"; + } + export interface Vapi extends Vapi.VapiTranscriber { provider: "vapi"; } diff --git a/src/api/types/WorkflowUserEditableVoice.ts b/src/api/types/WorkflowUserEditableVoice.ts index 2f2d21e7..c4497611 100644 --- a/src/api/types/WorkflowUserEditableVoice.ts +++ b/src/api/types/WorkflowUserEditableVoice.ts @@ -21,7 +21,6 @@ export type WorkflowUserEditableVoice = | Vapi.WorkflowUserEditableVoice.Wellsaid | Vapi.WorkflowUserEditableVoice.RimeAi | Vapi.WorkflowUserEditableVoice.SmallestAi - | Vapi.WorkflowUserEditableVoice.Tavus | Vapi.WorkflowUserEditableVoice.Vapi | Vapi.WorkflowUserEditableVoice.Sesame | Vapi.WorkflowUserEditableVoice.Inworld @@ -82,10 +81,6 @@ export namespace WorkflowUserEditableVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/WorkflowVoice.ts b/src/api/types/WorkflowVoice.ts index 5a818ca6..939f1642 100644 --- a/src/api/types/WorkflowVoice.ts +++ b/src/api/types/WorkflowVoice.ts @@ -21,7 +21,6 @@ export type WorkflowVoice = | Vapi.WorkflowVoice.Wellsaid | Vapi.WorkflowVoice.RimeAi | Vapi.WorkflowVoice.SmallestAi - | Vapi.WorkflowVoice.Tavus | Vapi.WorkflowVoice.Vapi | Vapi.WorkflowVoice.Sesame | Vapi.WorkflowVoice.Inworld @@ -82,10 +81,6 @@ export namespace WorkflowVoice { provider: "smallest-ai"; } - export interface Tavus extends Vapi.TavusVoice { - provider: "tavus"; - } - export interface Vapi extends Vapi.VapiVoice { provider: "vapi"; } diff --git a/src/api/types/XaiModel.ts b/src/api/types/XaiModel.ts index f64755b8..a30b389b 100644 --- a/src/api/types/XaiModel.ts +++ b/src/api/types/XaiModel.ts @@ -33,7 +33,7 @@ export interface XaiModel { model: Vapi.XaiModelModel; /** This is the temperature that will be used for calls. Default is 0.5. */ temperature?: number | undefined; - /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna no cap is applied unless you set one, because reasoning uses output tokens and a small cap can leave the reply empty. */ + /** This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250. On gpt-6-luna and claude-haiku-5-5 no cap is applied unless you set one (claude-haiku-5-5 sends its 128,000-token maximum), because reasoning uses output tokens and a small cap can leave the reply empty. */ maxTokens?: number | undefined; /** * This determines whether we detect user's emotion while they speak and send it as an additional info to model. diff --git a/src/api/types/index.ts b/src/api/types/index.ts index 72ed5366..5e09b088 100644 --- a/src/api/types/index.ts +++ b/src/api/types/index.ts @@ -20,11 +20,13 @@ export * from "./AnthropicBedrockCredentialRegion.js"; export * from "./AnthropicBedrockModel.js"; export * from "./AnthropicBedrockModelFallbackModelsItem.js"; export * from "./AnthropicBedrockModelModel.js"; +export * from "./AnthropicBedrockModelReasoningEffort.js"; export * from "./AnthropicBedrockModelToolsItem.js"; export * from "./AnthropicCredential.js"; export * from "./AnthropicCredentialProvider.js"; export * from "./AnthropicModel.js"; export * from "./AnthropicModelModel.js"; +export * from "./AnthropicModelReasoningEffort.js"; export * from "./AnthropicModelToolsItem.js"; export * from "./AnthropicThinkingConfig.js"; export * from "./AnthropicThinkingConfigType.js"; @@ -70,10 +72,10 @@ export * from "./AssistantDraftVoice.js"; export * from "./AssistantDraftVoicemailDetection.js"; export * from "./AssistantDraftVoicemailDetectionZero.js"; export * from "./AssistantFirstMessageMode.js"; -export * from "./AssistantHookAssistantSpeechInterrupted.js"; -export * from "./AssistantHookCallEnding.js"; -export * from "./AssistantHookCustomerSpeechInterrupted.js"; export * from "./AssistantHooksItem.js"; +export * from "./AssistantManagedConflictResponseDto.js"; +export * from "./AssistantManagedConflictResponseDtoError.js"; +export * from "./AssistantManagedVapiAgentsDto.js"; export * from "./AssistantMessage.js"; export * from "./AssistantMessageEvaluationContinuePlan.js"; export * from "./AssistantMessageJudgePlanAi.js"; @@ -99,13 +101,11 @@ export * from "./AssistantOverridesVoicemailDetection.js"; export * from "./AssistantOverridesVoicemailDetectionZero.js"; export * from "./AssistantPaginatedResponse.js"; export * from "./AssistantPinnedConflictResponseDto.js"; -export * from "./AssistantPinnedConflictResponseDtoError.js"; export * from "./AssistantServerMessagesItem.js"; export * from "./AssistantSpeechWordAlignmentTiming.js"; export * from "./AssistantSpeechWordProgressTiming.js"; export * from "./AssistantSpeechWordTimestamp.js"; export * from "./AssistantTranscriber.js"; -export * from "./AssistantUserEditable.js"; export * from "./AssistantVersion.js"; export * from "./AssistantVersionBackgroundSound.js"; export * from "./AssistantVersionBackgroundSoundZero.js"; @@ -200,6 +200,49 @@ export * from "./CallBatchResponse.js"; export * from "./CallCostsItem.js"; export * from "./CallDestination.js"; export * from "./CallEndedReason.js"; +export * from "./CallHealthDashboardAffectedCallDto.js"; +export * from "./CallHealthDashboardAffectedCallDtoCallAvailability.js"; +export * from "./CallHealthDashboardAffectedCallsResponseDto.js"; +export * from "./CallHealthDashboardApiErrorDto.js"; +export * from "./CallHealthDashboardAssignmentCoverageDto.js"; +export * from "./CallHealthDashboardAssistantGoalsDto.js"; +export * from "./CallHealthDashboardAssistantGoalsResponseDto.js"; +export * from "./CallHealthDashboardAssistantListResponseDto.js"; +export * from "./CallHealthDashboardAssistantOverviewDto.js"; +export * from "./CallHealthDashboardAssistantReferenceDto.js"; +export * from "./CallHealthDashboardAssistantSummaryResponseDto.js"; +export * from "./CallHealthDashboardClassificationCoverageDto.js"; +export * from "./CallHealthDashboardCoverageDto.js"; +export * from "./CallHealthDashboardDiscoveryCoverageDto.js"; +export * from "./CallHealthDashboardFacetsDto.js"; +export * from "./CallHealthDashboardFacetsDtoStatusesItem.js"; +export * from "./CallHealthDashboardGoalDailyDto.js"; +export * from "./CallHealthDashboardGoalDefinitionDto.js"; +export * from "./CallHealthDashboardGoalGapsDto.js"; +export * from "./CallHealthDashboardGoalOptionDto.js"; +export * from "./CallHealthDashboardGoalSummaryDto.js"; +export * from "./CallHealthDashboardIntakeCoverageDto.js"; +export * from "./CallHealthDashboardIntakeCoverageDtoDeliveryMode.js"; +export * from "./CallHealthDashboardIntakeCoverageDtoEndToEndCoverage.js"; +export * from "./CallHealthDashboardIssueActivityDto.js"; +export * from "./CallHealthDashboardIssueActivityDtoAction.js"; +export * from "./CallHealthDashboardIssueActivityListResponseDto.js"; +export * from "./CallHealthDashboardIssueCoverageDto.js"; +export * from "./CallHealthDashboardIssueCoverageDtoState.js"; +export * from "./CallHealthDashboardIssueDailyDto.js"; +export * from "./CallHealthDashboardIssueDefinitionDto.js"; +export * from "./CallHealthDashboardIssueDetailResponseDto.js"; +export * from "./CallHealthDashboardIssueListResponseDto.js"; +export * from "./CallHealthDashboardIssueReferenceDto.js"; +export * from "./CallHealthDashboardIssueReferenceDtoStatus.js"; +export * from "./CallHealthDashboardIssueSummaryDto.js"; +export * from "./CallHealthDashboardIssueSummaryDtoStatus.js"; +export * from "./CallHealthDashboardSeriesPageDto.js"; +export * from "./CallHealthDashboardSweepCoverageDto.js"; +export * from "./CallHealthDashboardSweepCoverageDtoState.js"; +export * from "./CallHealthDashboardTriageRequestDto.js"; +export * from "./CallHealthDashboardTriageRequestDtoAction.js"; +export * from "./CallHealthDashboardWindowDto.js"; export * from "./CallHookAssistantSpeechInterrupted.js"; export * from "./CallHookAssistantSpeechInterruptedDoItem.js"; export * from "./CallHookAssistantSpeechInterruptedOn.js"; @@ -561,6 +604,7 @@ export * from "./CreatePieInsightFromCallTableDtoQueriesItem.js"; export * from "./CreatePlayHtCredentialDto.js"; export * from "./CreateQueryToolDto.js"; export * from "./CreateQueryToolDtoMessagesItem.js"; +export * from "./CreateReson8CredentialDto.js"; export * from "./CreateRimeAiCredentialDto.js"; export * from "./CreateRunpodCredentialDto.js"; export * from "./CreateS3CompatibleCredentialDto.js"; @@ -626,8 +670,6 @@ export * from "./CreateTrafficAllocationTargetDto.js"; export * from "./CreateTransferCallToolDto.js"; export * from "./CreateTransferCallToolDtoDestinationsItem.js"; export * from "./CreateTransferCallToolDtoMessagesItem.js"; -export * from "./CreateTrieveCredentialDto.js"; -export * from "./CreateTrieveKnowledgeBaseDto.js"; export * from "./CreateTwilioCredentialDto.js"; export * from "./CreateTwilioPhoneNumberDto.js"; export * from "./CreateTwilioPhoneNumberDtoFallbackDestination.js"; @@ -642,6 +684,7 @@ export * from "./CreateVonagePhoneNumberDto.js"; export * from "./CreateVonagePhoneNumberDtoFallbackDestination.js"; export * from "./CreateVonagePhoneNumberDtoHooksItem.js"; export * from "./CreateWebCallDto.js"; +export * from "./CreateWebCallDtoVideoRecordingStartMode.js"; export * from "./CreateWebChatDto.js"; export * from "./CreateWebChatDtoInput.js"; export * from "./CreateWebChatDtoInputOneItem.js"; @@ -735,6 +778,7 @@ export * from "./EndpointedSpeechLowConfidenceOptions.js"; export * from "./Eval.js"; export * from "./EvalAnthropicModel.js"; export * from "./EvalAnthropicModelModel.js"; +export * from "./EvalAnthropicModelReasoningEffort.js"; export * from "./EvalCustomModel.js"; export * from "./EvalGoogleModel.js"; export * from "./EvalGoogleModelModel.js"; @@ -782,7 +826,6 @@ export * from "./ExportSessionDtoColumns.js"; export * from "./ExportSessionDtoFormat.js"; export * from "./ExportSessionDtoSortBy.js"; export * from "./ExportSessionDtoSortOrder.js"; -export * from "./FailedEdgeCondition.js"; export * from "./FallbackAssemblyAiTranscriber.js"; export * from "./FallbackAssemblyAiTranscriberLanguage.js"; export * from "./FallbackAssemblyAiTranscriberLanguageCodesItem.js"; @@ -803,8 +846,6 @@ export * from "./FallbackCartesiaVoiceModel.js"; export * from "./FallbackCustomTranscriber.js"; export * from "./FallbackCustomVoice.js"; export * from "./FallbackDeepgramTranscriber.js"; -export * from "./FallbackDeepgramTranscriberLanguage.js"; -export * from "./FallbackDeepgramTranscriberModel.js"; export * from "./FallbackDeepgramTranscriberRedactionItem.js"; export * from "./FallbackDeepgramVoice.js"; export * from "./FallbackDeepgramVoiceId.js"; @@ -845,7 +886,6 @@ export * from "./FallbackMinimaxVoiceModel.js"; export * from "./FallbackMinimaxVoiceProvider.js"; export * from "./FallbackMinimaxVoiceRegion.js"; export * from "./FallbackMinimaxVoiceSubtitleType.js"; -export * from "./FallbackNeetsVoice.js"; export * from "./FallbackNeuphonicVoice.js"; export * from "./FallbackNeuphonicVoiceModel.js"; export * from "./FallbackOpenAiTranscriber.js"; @@ -863,6 +903,9 @@ export * from "./FallbackPlayHtVoiceId.js"; export * from "./FallbackPlayHtVoiceIdEnum.js"; export * from "./FallbackPlayHtVoiceLanguage.js"; export * from "./FallbackPlayHtVoiceModel.js"; +export * from "./FallbackReson8Transcriber.js"; +export * from "./FallbackReson8TranscriberFillerMode.js"; +export * from "./FallbackReson8TranscriberModel.js"; export * from "./FallbackRimeAiVoice.js"; export * from "./FallbackRimeAiVoiceId.js"; export * from "./FallbackRimeAiVoiceIdEnum.js"; @@ -888,8 +931,6 @@ export * from "./FallbackTalkscriberTranscriber.js"; export * from "./FallbackTalkscriberTranscriberLanguage.js"; export * from "./FallbackTalkscriberTranscriberModel.js"; export * from "./FallbackTavusVoice.js"; -export * from "./FallbackTavusVoiceVoiceId.js"; -export * from "./FallbackTavusVoiceVoiceIdZero.js"; export * from "./FallbackTranscriberPlan.js"; export * from "./FallbackTranscriberPlanTranscribersItem.js"; export * from "./FallbackVapiVoice.js"; @@ -930,7 +971,6 @@ export * from "./FormatPlanFormattersEnabledItem.js"; export * from "./FormatPlanReplacementsItem.js"; export * from "./FourierDenoisingPlan.js"; export * from "./FunctionCall.js"; -export * from "./FunctionCallAssistantHookAction.js"; export * from "./FunctionCallHookAction.js"; export * from "./FunctionCallHookActionMessagesItem.js"; export * from "./FunctionCallHookActionType.js"; @@ -948,6 +988,7 @@ export * from "./GeminiMultimodalLiveSpeechConfig.js"; export * from "./GeminiMultimodalLiveVoiceConfig.js"; export * from "./GeneratedScenario.js"; export * from "./GeneratedScenarioCategory.js"; +export * from "./GenerateScenariosDto.js"; export * from "./GenerateScenariosResponse.js"; export * from "./GetChatPaginatedDto.js"; export * from "./GetChatPaginatedDtoSortBy.js"; @@ -965,11 +1006,12 @@ export * from "./GetToolDraftsDto.js"; export * from "./GetTrafficAllocationLatestDto.js"; export * from "./GetTrafficAllocationPaginatedDto.js"; export * from "./GetTrafficAllocationPaginatedDtoSortOrder.js"; +export * from "./GetTrafficTabMetricsDto.js"; +export * from "./GetTrafficTabMetricsDtoBucket.js"; export * from "./GhlTool.js"; export * from "./GhlToolMessagesItem.js"; export * from "./GhlToolMetadata.js"; export * from "./GhlToolProviderDetails.js"; -export * from "./GhlToolType.js"; export * from "./GhlToolWithToolCall.js"; export * from "./GhlToolWithToolCallMessagesItem.js"; export * from "./GladiaCredential.js"; @@ -984,6 +1026,13 @@ export * from "./GladiaTranscriberModel.js"; export * from "./GladiaTranscriberRegion.js"; export * from "./GladiaVocabularyItemDto.js"; export * from "./GlobalNodePlan.js"; +export * from "./GoalEvaluationCurrentBatchRequestDto.js"; +export * from "./GoalEvaluationCurrentBatchResponseDto.js"; +export * from "./GoalEvaluationCurrentCallRequestDto.js"; +export * from "./GoalEvaluationCurrentCallResponseDto.js"; +export * from "./GoalEvaluationCurrentDto.js"; +export * from "./GoalEvaluationCurrentDtoGoalOutcome.js"; +export * from "./GoalEvaluationCurrentDtoProcessingState.js"; export * from "./GoHighLevelCalendarAvailabilityTool.js"; export * from "./GoHighLevelCalendarAvailabilityToolMessagesItem.js"; export * from "./GoHighLevelCalendarAvailabilityToolProviderDetails.js"; @@ -1051,6 +1100,21 @@ export * from "./GroqModelToolsItem.js"; export * from "./GroupCondition.js"; export * from "./GroupConditionConditionsItem.js"; export * from "./GroupConditionOperator.js"; +export * from "./GuardrailAuthoring.js"; +export * from "./GuardrailAuthoringMode.js"; +export * from "./GuardrailEscalateAction.js"; +export * from "./GuardrailEscalateActionType.js"; +export * from "./GuardrailFixedResponseAction.js"; +export * from "./GuardrailFixedResponseActionType.js"; +export * from "./GuardrailPack.js"; +export * from "./GuardrailPacksPage.js"; +export * from "./GuardrailRedirectAction.js"; +export * from "./GuardrailRedirectActionType.js"; +export * from "./GuardrailRule.js"; +export * from "./GuardrailRuleAction.js"; +export * from "./GuardrailRuleActionZero.js"; +export * from "./GuardrailRuleSensitivity.js"; +export * from "./GuardrailRulesPage.js"; export * from "./HandoffDestinationAssistant.js"; export * from "./HandoffDestinationAssistantContextEngineeringPlan.js"; export * from "./HandoffDestinationAssistantType.js"; @@ -1172,7 +1236,6 @@ export * from "./LmntVoice.js"; export * from "./LmntVoiceId.js"; export * from "./LmntVoiceIdEnum.js"; export * from "./LmntVoiceLanguage.js"; -export * from "./LogicEdgeCondition.js"; export * from "./MakeCredential.js"; export * from "./MakeCredentialProvider.js"; export * from "./MakeTool.js"; @@ -1210,13 +1273,13 @@ export * from "./MinMessagesCondition.js"; export * from "./MistralCredential.js"; export * from "./MistralCredentialProvider.js"; export * from "./ModelCost.js"; +export * from "./ModelCostServiceTierBreakdown.js"; export * from "./ModelDeprecationNotice.js"; export * from "./ModelDeprecationNoticeReplacementStatus.js"; export * from "./Monitor.js"; export * from "./MonitorPlan.js"; export * from "./MonitorResult.js"; export * from "./Mono.js"; -export * from "./NeetsVoice.js"; export * from "./NeuphonicCredential.js"; export * from "./NeuphonicCredentialProvider.js"; export * from "./NeuphonicVoice.js"; @@ -1359,6 +1422,11 @@ export * from "./RelayTargetAssistant.js"; export * from "./RelayTargetOptions.js"; export * from "./RelayTargetOptionsType.js"; export * from "./RelayTargetSquad.js"; +export * from "./Reson8Credential.js"; +export * from "./Reson8CredentialProvider.js"; +export * from "./Reson8Transcriber.js"; +export * from "./Reson8TranscriberFillerMode.js"; +export * from "./Reson8TranscriberModel.js"; export * from "./ResponseCompletedEvent.js"; export * from "./ResponseCompletedEventType.js"; export * from "./ResponseErrorEvent.js"; @@ -1391,13 +1459,11 @@ export * from "./S3CompatibleStorageCredential.js"; export * from "./S3CompatibleStorageCredentialProvider.js"; export * from "./S3Credential.js"; export * from "./S3CredentialProvider.js"; -export * from "./SayAssistantHookAction.js"; export * from "./SayHookAction.js"; export * from "./SayHookActionExact.js"; export * from "./SayHookActionPrompt.js"; export * from "./SayHookActionPromptOneItem.js"; export * from "./SayPhoneNumberHookAction.js"; -export * from "./SbcConfiguration.js"; export * from "./Scenario.js"; export * from "./ScenarioHooksItem.js"; export * from "./ScenarioInUseConflictResponseDto.js"; @@ -1535,6 +1601,8 @@ export * from "./ServerMessageVoiceInputType.js"; export * from "./ServerMessageVoiceRequest.js"; export * from "./ServerMessageVoiceRequestPhoneNumber.js"; export * from "./ServerMessageVoiceRequestType.js"; +export * from "./ServiceUnavailableErrorBody.js"; +export * from "./ServiceUnavailableErrorBodyError.js"; export * from "./SesameVoice.js"; export * from "./SesameVoiceModel.js"; export * from "./Session.js"; @@ -1552,6 +1620,22 @@ export * from "./SimulationHookCallStarted.js"; export * from "./SimulationHookInclude.js"; export * from "./SimulationHookWebhookAction.js"; export * from "./SimulationHookWebhookActionType.js"; +export * from "./SimulationOnboardingCoverageGapDto.js"; +export * from "./SimulationOnboardingCoverageGapDtoReason.js"; +export * from "./SimulationOnboardingErrorDto.js"; +export * from "./SimulationOnboardingErrorDtoCode.js"; +export * from "./SimulationOnboardingOpenQuestionDto.js"; +export * from "./SimulationOnboardingRequirementDto.js"; +export * from "./SimulationOnboardingRequirementDtoTag.js"; +export * from "./SimulationOnboardingRequirementsDraftDto.js"; +export * from "./SimulationOnboardingSuiteCoverageDto.js"; +export * from "./SimulationOnboardingSuiteDocsDto.js"; +export * from "./SimulationOnboardingSuiteEditDto.js"; +export * from "./SimulationOnboardingSuiteRefDto.js"; +export * from "./SimulationOnboardingSuiteSimulationDto.js"; +export * from "./SimulationOnboardingSuiteViewDto.js"; +export * from "./SimulationOnboardingToolGapDto.js"; +export * from "./SimulationOnboardingToolGapDtoReason.js"; export * from "./SimulationRun.js"; export * from "./SimulationRunConfiguration.js"; export * from "./SimulationRunItem.js"; @@ -1563,7 +1647,11 @@ export * from "./SimulationRunItemImprovementSuggestion.js"; export * from "./SimulationRunItemImprovements.js"; export * from "./SimulationRunItemMetadata.js"; export * from "./SimulationRunItemResults.js"; +export * from "./SimulationRunItemResultsSkippedStructuredOutputsValue.js"; +export * from "./SimulationRunItemResultsSkippedStructuredOutputsValueReason.js"; +export * from "./SimulationRunItemResultsStructuredOutputsValue.js"; export * from "./SimulationRunItemStatus.js"; +export * from "./SimulationRunItemsPaginatedResponse.js"; export * from "./SimulationRunListItem.js"; export * from "./SimulationRunListItemSimulationsItem.js"; export * from "./SimulationRunListItemStatus.js"; @@ -1584,6 +1672,7 @@ export * from "./SimulationRunTargetSquad.js"; export * from "./SimulationRunTransportConfiguration.js"; export * from "./SimulationRunTransportConfigurationProvider.js"; export * from "./SimulationSuite.js"; +export * from "./SimulationSuitesPaginatedResponse.js"; export * from "./SimulationSuiteTargetAssignment.js"; export * from "./SimulationSuiteTargetAssignmentTargetType.js"; export * from "./SipAuthentication.js"; @@ -1686,8 +1775,6 @@ export * from "./TavusConversationProperties.js"; export * from "./TavusCredential.js"; export * from "./TavusCredentialProvider.js"; export * from "./TavusVoice.js"; -export * from "./TavusVoiceVoiceId.js"; -export * from "./TavusVoiceVoiceIdZero.js"; export * from "./TelnyxPhoneNumber.js"; export * from "./TelnyxPhoneNumberFallbackDestination.js"; export * from "./TelnyxPhoneNumberHooksItem.js"; @@ -1795,10 +1882,24 @@ export * from "./TrafficAllocationAllocationIntent.js"; export * from "./TrafficAllocationLatestResponseDto.js"; export * from "./TrafficAllocationPaginatedResponse.js"; export * from "./TrafficAllocationStaleConflictResponseDto.js"; -export * from "./TrafficAllocationStaleConflictResponseDtoError.js"; export * from "./TrafficAllocationTarget.js"; export * from "./TrafficAllocationVersionConflictResponseDto.js"; export * from "./TrafficAllocationVersionConflictResponseDtoError.js"; +export * from "./TrafficTabCostBreakdownPerMinuteDto.js"; +export * from "./TrafficTabCostPerMinuteDto.js"; +export * from "./TrafficTabDurationSecondsDto.js"; +export * from "./TrafficTabEndedReasonCountDto.js"; +export * from "./TrafficTabLatencyMsDto.js"; +export * from "./TrafficTabLatencyStatsDto.js"; +export * from "./TrafficTabMetricsDto.js"; +export * from "./TrafficTabMetricsWindowDto.js"; +export * from "./TrafficTabMetricsWindowDtoBucket.js"; +export * from "./TrafficTabStructuredOutputDto.js"; +export * from "./TrafficTabStructuredOutputDtoType.js"; +export * from "./TrafficTabStructuredOutputNumericDto.js"; +export * from "./TrafficTabStructuredOutputValueCountDto.js"; +export * from "./TrafficTabTimeseriesPointDto.js"; +export * from "./TrafficTabVersionMetricsDto.js"; export * from "./TranscriberCost.js"; export * from "./TranscriptionEndpointingPlan.js"; export * from "./TranscriptPlan.js"; @@ -1812,7 +1913,7 @@ export * from "./TransferAssistant.js"; export * from "./TransferAssistantBackgroundSound.js"; export * from "./TransferAssistantBackgroundSoundZero.js"; export * from "./TransferAssistantFirstMessageMode.js"; -export * from "./TransferAssistantHookAction.js"; +export * from "./TransferAssistantHooksItem.js"; export * from "./TransferAssistantModel.js"; export * from "./TransferAssistantModelProvider.js"; export * from "./TransferAssistantTranscriber.js"; @@ -1845,6 +1946,19 @@ export * from "./TransferPlanMode.js"; export * from "./TransferSuccessfulToolUserEditable.js"; export * from "./TransferSuccessfulToolUserEditableMessagesItem.js"; export * from "./TransferSuccessfulToolUserEditableType.js"; +export * from "./TransientAssistantDto.js"; +export * from "./TransientAssistantDtoBackgroundSound.js"; +export * from "./TransientAssistantDtoBackgroundSoundZero.js"; +export * from "./TransientAssistantDtoClientMessagesItem.js"; +export * from "./TransientAssistantDtoCredentialsItem.js"; +export * from "./TransientAssistantDtoFirstMessageMode.js"; +export * from "./TransientAssistantDtoHooksItem.js"; +export * from "./TransientAssistantDtoModel.js"; +export * from "./TransientAssistantDtoServerMessagesItem.js"; +export * from "./TransientAssistantDtoTranscriber.js"; +export * from "./TransientAssistantDtoVoice.js"; +export * from "./TransientAssistantDtoVoicemailDetection.js"; +export * from "./TransientAssistantDtoVoicemailDetectionZero.js"; export * from "./TransientTwilioPhoneNumber.js"; export * from "./TransientTwilioPhoneNumberFallbackDestination.js"; export * from "./TransientTwilioPhoneNumberHooksItem.js"; @@ -1853,9 +1967,8 @@ export * from "./TransportConfigurationTwilioProvider.js"; export * from "./TransportConfigurationTwilioRecordingChannels.js"; export * from "./TransportCost.js"; export * from "./TransportCostProvider.js"; -export * from "./TrieveKnowledgeBase.js"; -export * from "./TrieveKnowledgeBaseImport.js"; export * from "./TurnLatency.js"; +export * from "./TurnLatencyUnmeasuredItem.js"; export * from "./TwilioCredential.js"; export * from "./TwilioCredentialProvider.js"; export * from "./TwilioPhoneNumber.js"; @@ -1928,7 +2041,6 @@ export * from "./UpdateCloudflareCredentialDto.js"; export * from "./UpdateCloudflareCredentialDtoProvider.js"; export * from "./UpdateCodeToolDto.js"; export * from "./UpdateCodeToolDtoMessagesItem.js"; -export * from "./UpdateCodeToolDtoType.js"; export * from "./UpdateComputerToolDto.js"; export * from "./UpdateComputerToolDtoMessagesItem.js"; export * from "./UpdateComputerToolDtoName.js"; @@ -2041,6 +2153,8 @@ export * from "./UpdatePlayHtCredentialDto.js"; export * from "./UpdatePlayHtCredentialDtoProvider.js"; export * from "./UpdateQueryToolDto.js"; export * from "./UpdateQueryToolDtoMessagesItem.js"; +export * from "./UpdateReson8CredentialDto.js"; +export * from "./UpdateReson8CredentialDtoProvider.js"; export * from "./UpdateRimeAiCredentialDto.js"; export * from "./UpdateRimeAiCredentialDtoProvider.js"; export * from "./UpdateRunpodCredentialDto.js"; @@ -2098,7 +2212,6 @@ export * from "./UpdateToolVersionMetadataDto.js"; export * from "./UpdateTransferCallToolDto.js"; export * from "./UpdateTransferCallToolDtoDestinationsItem.js"; export * from "./UpdateTransferCallToolDtoMessagesItem.js"; -export * from "./UpdateTrieveKnowledgeBaseDto.js"; export * from "./UpdateTwilioCredentialDto.js"; export * from "./UpdateTwilioCredentialDtoProvider.js"; export * from "./UpdateTwilioPhoneNumberDto.js"; @@ -2136,10 +2249,13 @@ export * from "./UpdateWorkflowDtoVoicemailDetection.js"; export * from "./UpdateWorkflowDtoVoicemailDetectionZero.js"; export * from "./UpdateXAiCredentialDto.js"; export * from "./UpdateXAiCredentialDtoProvider.js"; -export * from "./User.js"; export * from "./UserMessage.js"; export * from "./UserMessageConfidenceSource.js"; export * from "./UserMessageMetadata.js"; +export * from "./UserWithRole.js"; +export * from "./UserWithRoleRole.js"; +export * from "./UserWithRoleRoleZero.js"; +export * from "./ValidateBackgroundSoundUrlDto.js"; export * from "./VapiCost.js"; export * from "./VapiCostSubType.js"; export * from "./VapiModel.js"; @@ -2224,6 +2340,7 @@ export * from "./WorkflowModel.js"; export * from "./WorkflowNodesItem.js"; export * from "./WorkflowOpenAiModel.js"; export * from "./WorkflowOpenAiModelModel.js"; +export * from "./WorkflowOpenAiModelReasoningEffort.js"; export * from "./WorkflowOverrides.js"; export * from "./WorkflowTranscriber.js"; export * from "./WorkflowUserEditable.js"; diff --git a/src/version.ts b/src/version.ts index f29e2e55..c8a6ab3f 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = "3.0.0"; +export const SDK_VERSION = "4.0.0"; diff --git a/tests/wire/assistants.test.ts b/tests/wire/assistants.test.ts index aac7f3a7..067a42db 100644 --- a/tests/wire/assistants.test.ts +++ b/tests/wire/assistants.test.ts @@ -100,6 +100,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -598,6 +599,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -1155,6 +1157,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -1668,6 +1671,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -2186,32 +2190,6 @@ describe("AssistantsClient", () => { }); }); - test("AssistantController_validateBackgroundSoundUrl", async () => { - const server = mockServerPool.createServer(); - const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - const rawRequestBody = { url: "https://example.com/my-sound.mp3" }; - const rawResponseBody = { valid: true, reason: "invalid-url", status: 1.1, contentType: "contentType" }; - - server - .mockEndpoint() - .post("/assistant/background-sound/validate") - .jsonBody(rawRequestBody) - .respondWith() - .statusCode(200) - .jsonBody(rawResponseBody) - .build(); - - const response = await client.assistants.assistantControllerValidateBackgroundSoundUrl({ - url: "https://example.com/my-sound.mp3", - }); - expect(response).toEqual({ - valid: true, - reason: "invalid-url", - status: 1.1, - contentType: "contentType", - }); - }); - test("get", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); @@ -2306,6 +2284,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -2814,6 +2793,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -3426,6 +3406,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -3934,6 +3915,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -4467,7 +4449,7 @@ describe("AssistantsClient", () => { }).rejects.toThrow(Vapi.ConflictError); }); - test("update", async () => { + test("update (1)", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); const rawRequestBody = {}; @@ -4561,6 +4543,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -5076,6 +5059,7 @@ describe("AssistantsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -5593,4 +5577,26 @@ describe("AssistantsClient", () => { updatedAt: "2024-01-15T09:30:00Z", }); }); + + test("update (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/assistant/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.assistants.update({ + id: "id", + }); + }).rejects.toThrow(Vapi.ConflictError); + }); }); diff --git a/tests/wire/calls.test.ts b/tests/wire/calls.test.ts index cb6a9d33..12b24659 100644 --- a/tests/wire/calls.test.ts +++ b/tests/wire/calls.test.ts @@ -10,7 +10,7 @@ describe("CallsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); - const rawResponseBody = [ { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call-start-error-neither-assistant-nor-server-set" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "number" : "number" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "total" : 1.1 , "llmPromptTokens" : 1.1 , "llmCompletionTokens" : 1.1 , "llmCachedPromptTokens" : 1.1 , "ttsCharacters" : 1.1 } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "model" : "gpt-6-luna" } , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } } ]; + const rawResponseBody = [ { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call.in-progress.error-vapifault-guardrail-evaluation-failed" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "number" : "number" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "total" : 1.1 , "llmPromptTokens" : 1.1 , "llmCompletionTokens" : 1.1 , "llmCachedPromptTokens" : 1.1 , "ttsCharacters" : 1.1 } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "model" : "gpt-6-luna" } , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } } ]; server .mockEndpoint() @@ -37,7 +37,7 @@ describe("CallsClient", () => { }], phoneCallTransport: "sip", status: "scheduled", - endedReason: "call-start-error-neither-assistant-nor-server-set", + endedReason: "call.in-progress.error-vapifault-guardrail-evaluation-failed", endedMessage: "endedMessage", destination: { type: "number", @@ -3252,7 +3252,7 @@ describe("CallsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); const rawRequestBody = { }; - const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call-start-error-neither-assistant-nor-server-set" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; + const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call.in-progress.error-vapifault-guardrail-evaluation-failed" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 , "turnLatencyUnmeasuredTracked" : true } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "reasoningEffort" : "minimal" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; server .mockEndpoint() @@ -3288,7 +3288,7 @@ describe("CallsClient", () => { }], phoneCallTransport: "sip", status: "scheduled", - endedReason: "call-start-error-neither-assistant-nor-server-set", + endedReason: "call.in-progress.error-vapifault-guardrail-evaluation-failed", endedMessage: "endedMessage", destination: { type: "number", @@ -3541,7 +3541,8 @@ describe("CallsClient", () => { fromTransportLatencyAverage: 1.1, toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, - numAssistantInterrupted: 1.1 + numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true }, structuredOutputs: { "key": "value" @@ -3672,6 +3673,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -4052,6 +4054,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -5459,6 +5462,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -5872,6 +5876,7 @@ describe("CallsClient", () => { role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1 }, @@ -6930,7 +6935,7 @@ describe("CallsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); - const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call-start-error-neither-assistant-nor-server-set" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; + const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call.in-progress.error-vapifault-guardrail-evaluation-failed" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 , "turnLatencyUnmeasuredTracked" : true } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "reasoningEffort" : "minimal" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; server .mockEndpoint() @@ -6967,7 +6972,7 @@ describe("CallsClient", () => { }], phoneCallTransport: "sip", status: "scheduled", - endedReason: "call-start-error-neither-assistant-nor-server-set", + endedReason: "call.in-progress.error-vapifault-guardrail-evaluation-failed", endedMessage: "endedMessage", destination: { type: "number", @@ -7220,7 +7225,8 @@ describe("CallsClient", () => { fromTransportLatencyAverage: 1.1, toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, - numAssistantInterrupted: 1.1 + numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true }, structuredOutputs: { "key": "value" @@ -7351,6 +7357,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -7731,6 +7738,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -9138,6 +9146,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -9551,6 +9560,7 @@ describe("CallsClient", () => { role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1 }, @@ -10571,7 +10581,7 @@ describe("CallsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); const rawRequestBody = { }; - const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call-start-error-neither-assistant-nor-server-set" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; + const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call.in-progress.error-vapifault-guardrail-evaluation-failed" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 , "turnLatencyUnmeasuredTracked" : true } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "reasoningEffort" : "minimal" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; server .mockEndpoint() @@ -10609,7 +10619,7 @@ describe("CallsClient", () => { }], phoneCallTransport: "sip", status: "scheduled", - endedReason: "call-start-error-neither-assistant-nor-server-set", + endedReason: "call.in-progress.error-vapifault-guardrail-evaluation-failed", endedMessage: "endedMessage", destination: { type: "number", @@ -10862,7 +10872,8 @@ describe("CallsClient", () => { fromTransportLatencyAverage: 1.1, toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, - numAssistantInterrupted: 1.1 + numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true }, structuredOutputs: { "key": "value" @@ -10993,6 +11004,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -11373,6 +11385,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -12780,6 +12793,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -13193,6 +13207,7 @@ describe("CallsClient", () => { role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1 }, @@ -14234,7 +14249,7 @@ describe("CallsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); const rawRequestBody = { }; - const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call-start-error-neither-assistant-nor-server-set" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; + const rawResponseBody = { "type" : "inboundPhoneCall" , "costs" : [ { "type" : "transport" , "provider" : "daily" , "minutes" : 1.1 , "cost" : 1.1 } ] , "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 , "duration" : 1.1 , "isFiltered" : true , "detectedThreats" : [ "detectedThreats" ] , "originalMessage" : "originalMessage" , "confidence" : 1.1 , "confidenceSource" : "provider" , "speakerLabel" : "speakerLabel" } ] , "phoneCallTransport" : "sip" , "status" : "scheduled" , "endedReason" : "call.in-progress.error-vapifault-guardrail-evaluation-failed" , "endedMessage" : "endedMessage" , "destination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" , "message" : "message" , "timeout" : 1.1 , "sipVerb" : { "key" : "value" } , "dialTimeout" : 1.1 , "holdAudioUrl" : "holdAudioUrl" , "transferCompleteAudioUrl" : "transferCompleteAudioUrl" , "contextEngineeringPlan" : { "type" : "lastNMessages" , "maxMessages" : 1.1 } , "twiml" : "twiml" , "sipHeadersInReferToEnabled" : true , "fallbackPlan" : { "message" : "message" } } , "name" : "name" , "description" : "description" } , "assistantVersion" : "assistantVersion" , "squadVersion" : "squadVersion" , "transport" : { "provider" : "vapi.websocket" , "conversationType" : "voice" , "audioFormat" : { "sampleRate" : 1.1 , "format" : "pcm_s16le" , "container" : "raw" } } , "phoneNumber" : { "fallbackDestination" : { "type" : "number" , "message" : "message" , "numberE164CheckEnabled" : true , "number" : "number" , "extension" : "extension" , "callerId" : "callerId" , "transferPlan" : { "mode" : "blind-transfer" } , "name" : "name" , "description" : "description" } , "hooks" : [ { "on" : "call.ringing" , "do" : [ { "type" : "transfer" } ] } ] , "smsEnabled" : true , "name" : "name" , "assistantId" : "assistantId" , "workflowId" : "workflowId" , "squadId" : "squadId" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "twilioPhoneNumber" : "twilioPhoneNumber" , "twilioAccountSid" : "twilioAccountSid" } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "startedAt" : "2024-01-15T09:30:00Z" , "endedAt" : "2024-01-15T09:30:00Z" , "cost" : 1.1 , "costBreakdown" : { "transport" : 1.1 , "stt" : 1.1 , "llm" : 1.1 , "tts" : 1.1 , "vapi" : 1.1 , "chat" : 1.1 , "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" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true , "assistantName" : "assistantName" , "userName" : "userName" } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "analysis" : { "summary" : "summary" , "structuredData" : { "key" : "value" } , "structuredDataMulti" : [ { "key" : "value" } ] , "successEvaluation" : "successEvaluation" } , "monitor" : { "monitors" : [ { "monitorId" : "monitorId" , "filterPassed" : true } ] , "listenUrl" : "listenUrl" , "controlUrl" : "controlUrl" } , "artifact" : { "messages" : [ { "role" : "role" , "message" : "message" , "time" : 1.1 , "endTime" : 1.1 , "secondsFromStart" : 1.1 } ] , "messagesOpenAIFormatted" : [ { "content" : null , "role" : "assistant" } ] , "skippedStructuredOutputs" : { "key" : { "name" : "name" , "unmetCondition" : { "type" : "minMessages" , "count" : 4 } } } , "transfers" : [ { "destination" : { "type" : "number" , "number" : "number" } } ] , "recording" : { "stereoUrl" : "stereoUrl" , "videoUrl" : "videoUrl" , "videoRecordingStartDelaySeconds" : 1.1 } , "transcript" : "transcript" , "pcapUrl" : "pcapUrl" , "logUrl" : "logUrl" , "nodes" : [ { } ] , "assistantActivations" : [ { "assistantName" : "assistantName" } ] , "variableValues" : { "key" : "value" } , "performanceMetrics" : { "turnLatencies" : [ { } ] , "modelLatencyAverage" : 1.1 , "voiceLatencyAverage" : 1.1 , "transcriberLatencyAverage" : 1.1 , "endpointingLatencyAverage" : 1.1 , "turnLatencyAverage" : 1.1 , "fromTransportLatencyAverage" : 1.1 , "toTransportLatencyAverage" : 1.1 , "numUserInterrupted" : 1.1 , "numAssistantInterrupted" : 1.1 , "turnLatencyUnmeasuredTracked" : true } , "structuredOutputs" : { "key" : "value" } , "scorecards" : { "key" : "value" } , "structuredOutputsLastUpdatedAt" : "2024-01-15T09:30:00Z" , "presignedMonoUrl" : "presignedMonoUrl" , "presignedStereoUrl" : "presignedStereoUrl" , "presignedVideoUrl" : "presignedVideoUrl" , "presignedAssistantUrl" : "presignedAssistantUrl" , "presignedCustomerUrl" : "presignedCustomerUrl" , "presignedPcapUrl" : "presignedPcapUrl" , "presignedLogUrl" : "presignedLogUrl" , "presignedUrlsExpiresAt" : "presignedUrlsExpiresAt" } , "compliance" : { "recordingConsent" : { "type" : "stay-on-line" , "grantedAt" : "2024-01-15T09:30:00Z" } } , "campaignId" : "campaignId" , "assistantId" : "assistantId" , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadId" : "squadId" , "squad" : { "name" : "name" , "members" : [ { "assistantDestinations" : [ { "type" : "assistant" , "assistantName" : "assistantName" } ] , "assistant" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] , "membersOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "workflowId" : "workflowId" , "workflow" : { "nodes" : [ { "type" : "conversation" , "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "name" : "name" } ] , "model" : { "provider" : "openai" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "model" : "gpt-6-luna" , "reasoningEffort" : "minimal" , "temperature" : 1.1 , "maxTokens" : 1.1 } , "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "backgroundSound" : "https://example.com/my-sound.mp3" , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "voicemailDetection" : "off" , "maxDurationSeconds" : 600 , "name" : "name" , "edges" : [ { "from" : "from" , "to" : "to" } ] , "globalPrompt" : "globalPrompt" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "credentialIds" : [ "credentialIds" ] , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } , "voicemailMessage" : "voicemailMessage" } , "workflowOverrides" : { "variableValues" : { "key" : "value" } } , "phoneNumberId" : "phoneNumberId" , "customerId" : "customerId" , "customer" : { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "tags" : [ "tags" ] } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } , "name" : "name" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } }; server .mockEndpoint() @@ -14272,7 +14287,7 @@ describe("CallsClient", () => { }], phoneCallTransport: "sip", status: "scheduled", - endedReason: "call-start-error-neither-assistant-nor-server-set", + endedReason: "call.in-progress.error-vapifault-guardrail-evaluation-failed", endedMessage: "endedMessage", destination: { type: "number", @@ -14525,7 +14540,8 @@ describe("CallsClient", () => { fromTransportLatencyAverage: 1.1, toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, - numAssistantInterrupted: 1.1 + numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true }, structuredOutputs: { "key": "value" @@ -14656,6 +14672,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -15036,6 +15053,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -16443,6 +16461,7 @@ describe("CallsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -16856,6 +16875,7 @@ describe("CallsClient", () => { role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1 }, diff --git a/tests/wire/campaigns.test.ts b/tests/wire/campaigns.test.ts index d59e72e0..ae496149 100644 --- a/tests/wire/campaigns.test.ts +++ b/tests/wire/campaigns.test.ts @@ -2088,7 +2088,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -3562,6 +3562,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -3981,6 +3982,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -5093,7 +5095,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -6567,6 +6569,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -6986,6 +6989,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -7351,7 +7355,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); - const rawResponseBody = { "status" : "scheduled" , "endedReason" : "campaign.scheduled.ended-by-user" , "name" : "Q2 Sales Campaign" , "assistantId" : "assistantId" , "squadId" : "squadId" , "phoneNumberId" : "phoneNumberId" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "contactCounters" : { "pending" : 1.1 , "dispatched" : 1.1 , "completed" : 1.1 , "failed" : 1.1 , "skipped" : 1.1 , "predialFailed" : 1.1 } , "callMetrics" : { "dialed" : 1.1 , "connected" : 1.1 } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" }; + const rawResponseBody = { "status" : "scheduled" , "endedReason" : "campaign.scheduled.ended-by-user" , "name" : "Q2 Sales Campaign" , "assistantId" : "assistantId" , "squadId" : "squadId" , "phoneNumberId" : "phoneNumberId" , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "contactCounters" : { "pending" : 1.1 , "dispatched" : 1.1 , "completed" : 1.1 , "failed" : 1.1 , "skipped" : 1.1 , "predialFailed" : 1.1 } , "callMetrics" : { "dialed" : 1.1 , "connected" : 1.1 } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" }; server .mockEndpoint() @@ -7481,6 +7485,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -7900,6 +7905,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -8269,7 +8275,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); - 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -9742,6 +9748,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -10161,6 +10168,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -10526,7 +10534,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); const rawRequestBody = { }; - 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -12001,6 +12009,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -12420,6 +12429,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -12785,7 +12795,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); - 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -14258,6 +14268,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -14677,6 +14688,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -15042,7 +15054,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); - 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -16515,6 +16527,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -16934,6 +16947,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -17299,7 +17313,7 @@ describe("CampaignsClient", () => { const server = mockServerPool.createServer(); const client = new VapiClient({ "maxRetries" : 0 , "token" : "test" , "environment" : server.baseUrl }); const rawRequestBody = { }; - 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; + 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" : [ { "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } } ] } ] , "schedulePlan" : { "earliestAt" : "2024-01-15T09:30:00Z" , "latestAt" : "2024-01-15T09:30:00Z" } , "customers" : [ { "numberE164CheckEnabled" : true , "extension" : "extension" , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "compliancePlan" : { "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "number" : "number" , "sipUri" : "sipUri" , "name" : "name" , "email" : "email" , "externalId" : "externalId" } ] , "maxConcurrency" : 1.1 , "assistantOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "squadOverrides" : { "transcriber" : { "provider" : "assembly-ai" , "language" : "multi" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true , "mode" : "max_accuracy" , "prompt" : "prompt" , "agentContext" : "agentContext" , "agentContextAutoUpdateEnabled" : true , "languageCodes" : [ "en" ] , "speechModel" : "universal-streaming-english" , "realtimeUrl" : "realtimeUrl" , "wordBoost" : [ "wordBoost" ] , "keytermsPrompt" : [ "keytermsPrompt" ] , "endUtteranceSilenceThreshold" : 1.1 , "disablePartialTranscripts" : true , "fallbackPlan" : { "transcribers" : [ { "provider" : "assembly-ai" , "confidenceThreshold" : 0.4 , "formatTurns" : true , "endOfTurnConfidenceThreshold" : 0.7 , "minEndOfTurnSilenceWhenConfident" : 160 , "maxTurnSilence" : 400 , "vadAssistedEndpointingEnabled" : true } ] } } , "model" : { "provider" : "anthropic" , "messages" : [ { "content" : null , "role" : "assistant" } ] , "tools" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "toolIds" : [ "toolIds" ] , "toolRefs" : [ { "toolId" : "toolId" , "version" : "version" } ] , "knowledgeBase" : { "provider" : "custom-knowledge-base" , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } } , "model" : "claude-3-opus-20240229" , "reasoningEffort" : "none" , "thinking" : { "type" : "enabled" , "budgetTokens" : 1.1 } , "temperature" : 1.1 , "maxTokens" : 1.1 , "emotionRecognitionEnabled" : true , "numFastTurns" : 1.1 } , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "speed" : 1.1 , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "firstMessage" : "Hello! How can I help you today?" , "firstMessageInterruptionsEnabled" : true , "firstMessageMode" : "assistant-speaks-first" , "voicemailDetection" : "off" , "clientMessages" : [ "conversation-update" , "function-call" , "hang" , "model-output" , "speech-update" , "status-update" , "transfer-update" , "transcript" , "tool-calls" , "user-interrupted" , "voice-input" , "workflow.node.started" , "assistant.started" ] , "serverMessages" : [ "conversation-update" , "end-of-call-report" , "function-call" , "hang" , "speech-update" , "status-update" , "tool-calls" , "transfer-destination-request" , "handoff-destination-request" , "user-interrupted" , "assistant.started" ] , "maxDurationSeconds" : 600 , "backgroundSound" : "https://example.com/my-sound.mp3" , "modelOutputInMessagesEnabled" : false , "transportConfigurations" : [ { "provider" : "twilio" , "timeout" : 60 , "record" : false } ] , "observabilityPlan" : { "provider" : "langfuse" , "promptName" : "promptName" , "promptVersion" : 1.1 , "traceName" : "traceName" , "tags" : [ "tags" ] , "metadata" : { "key" : "value" } } , "credentials" : [ { "provider" : "11labs" , "apiKey" : "apiKey" } ] , "hooks" : [ { "on" : "call.ending" , "do" : [ { "type" : "tool" , "tool" : { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } } ] } ] , "tools:append" : [ { "type" : "apiRequest" , "messages" : [ { "type" : "request-start" , "blocking" : false } ] , "method" : "POST" , "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "url" : "url" , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } , "rejectionPlan" : { "conditions" : [ { "type" : "regex" , "regex" : "\\\\b(cancel|stop|wait)\\\\b - Matches whole words" , "target" : { "position" : -1 } } ] } } ] , "variableValues" : { "key" : "value" } , "name" : "name" , "voicemailMessage" : "voicemailMessage" , "endCallMessage" : "endCallMessage" , "endCallPhrases" : [ "endCallPhrases" ] , "compliancePlan" : { "hipaaEnabled" : true , "pciEnabled" : true , "recordingConsentPlan" : { "type" : "stay-on-line" , "message" : "For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent." , "voice" : { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } , "fallbackPlan" : { "voices" : [ { "provider" : "azure" , "cachingEnabled" : true , "voiceId" : "andrew" , "chunkPlan" : { "enabled" : true , "minCharacters" : 30 , "punctuationBoundaries" : [ "。" , "," , "." , "!" , "?" , ";" , "،" , "۔" , "।" , "॥" , "|" , "||" , "," , ":" ] , "formatPlan" : { "enabled" : true , "numberToDigitsCutoff" : 2025 } } } ] } } , "waitSeconds" : 3 } } , "metadata" : { "key" : "value" } , "backgroundSpeechDenoisingPlan" : { "fourierDenoisingPlan" : { "mediaDetectionEnabled" : true , "staticThreshold" : -35 , "baselineOffsetDb" : -15 , "windowSizeMs" : 3000 , "baselinePercentile" : 85 } } , "artifactPlan" : { "recordingEnabled" : true , "recordingFormat" : "wav;l16" , "recordingUseCustomStorageEnabled" : true , "videoRecordingEnabled" : false , "fullMessageHistoryEnabled" : false , "pcapEnabled" : true , "pcapS3PathPrefix" : "/pcaps" , "pcapUseCustomStorageEnabled" : true , "loggingEnabled" : true , "loggingUseCustomStorageEnabled" : true , "transcriptPlan" : { "enabled" : true } , "recordingPath" : "recordingPath" , "structuredOutputIds" : [ "structuredOutputIds" ] , "structuredOutputs" : [ { "compliancePlan" : { "forceStoreOnHipaaEnabled" : false } , "conditions" : [ { "type" : "minMessages" , "count" : 4 } , { "type" : "minCallDuration" , "seconds" : 10 } ] , "name" : "name" , "schema" : { "type" : "string" } } ] , "scorecardIds" : [ "scorecardIds" ] , "scorecards" : [ { "metrics" : [ { "conditions" : [ { "type" : "comparator" , "comparator" : "=" , "value" : 1.1 , "points" : 1.1 } ] , "structuredOutputId" : "structuredOutputId" } ] } ] , "loggingPath" : "loggingPath" } , "startSpeakingPlan" : { "waitSeconds" : 0.4 , "smartEndpointingPlan" : { "provider" : "vapi" } , "customEndpointingRules" : [ { "type" : "assistant" , "regex" : "regex" , "timeoutSeconds" : 1.1 } ] , "transcriptionEndpointingPlan" : { "onPunctuationSeconds" : 0.1 , "onNoPunctuationSeconds" : 1.5 , "onNumberSeconds" : 0.5 } } , "stopSpeakingPlan" : { "numWords" : 0 , "voiceSeconds" : 0.2 , "backoffSeconds" : 1 , "acknowledgementPhrases" : [ "i understand" , "i see" , "i got it" , "i hear you" , "im listening" , "im with you" , "right" , "okay" , "ok" , "sure" , "alright" , "got it" , "understood" , "yeah" , "yes" , "uh-huh" , "mm-hmm" , "gotcha" , "mhmm" , "ah" , "yeah okay" , "yeah sure" ] , "interruptionPhrases" : [ "stop" , "shut" , "up" , "enough" , "quiet" , "silence" , "but" , "dont" , "not" , "no" , "hold" , "wait" , "cut" , "pause" , "nope" , "nah" , "nevermind" , "never" , "bad" , "actually" ] } , "monitorPlan" : { "listenEnabled" : false , "listenAuthenticationEnabled" : false , "controlEnabled" : false , "controlAuthenticationEnabled" : false , "monitorIds" : [ "123e4567-e89b-12d3-a456-426614174000" ] } , "credentialIds" : [ "credentialIds" ] , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "keypadInputPlan" : { "enabled" : true , "timeoutSeconds" : 1.1 , "delimiters" : "#" } } , "server" : { "timeoutSeconds" : 20 , "credentialId" : "550e8400-e29b-41d4-a716-446655440000" , "staticIpAddressesEnabled" : false , "encryptedPaths" : [ "encryptedPaths" ] , "url" : "url" , "headers" : { "key" : "value" } , "backoffPlan" : { "type" : { "key" : "value" } , "maxRetries" : 0 , "baseDelaySeconds" : 1 , "excludedStatusCodes" : [ { "key" : "value" } , { "key" : "value" } , { "key" : "value" } , { "key" : "value" } ] } } , "serverMessages" : [ "campaign.started" , "contact.dispatched" ] , "predialPlan" : { "enabled" : true } , "id" : "id" , "orgId" : "orgId" , "createdAt" : "2024-01-15T09:30:00Z" , "updatedAt" : "2024-01-15T09:30:00Z" , "calls" : { "key" : "value" } , "callsCounterScheduled" : 1.1 , "callsCounterQueued" : 1.1 , "callsCounterInProgress" : 1.1 , "callsCounterEndedVoicemail" : 1.1 , "callsCounterEnded" : 1.1 }; server .mockEndpoint() @@ -18774,6 +18788,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 @@ -19193,6 +19208,7 @@ describe("CampaignsClient", () => { } }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 diff --git a/tests/wire/chats.test.ts b/tests/wire/chats.test.ts index 04eaa8f1..8363aab8 100644 --- a/tests/wire/chats.test.ts +++ b/tests/wire/chats.test.ts @@ -4755,6 +4755,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -5194,6 +5195,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -6827,6 +6829,7 @@ describe("ChatsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -6974,6 +6977,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -7545,6 +7549,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -9627,6 +9632,13 @@ describe("ChatsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], @@ -9730,6 +9742,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -10169,6 +10182,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -11802,6 +11816,7 @@ describe("ChatsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -11942,6 +11957,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -12513,6 +12529,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -14595,6 +14612,13 @@ describe("ChatsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], @@ -14698,6 +14722,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -15137,6 +15162,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -16770,6 +16796,7 @@ describe("ChatsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -16910,6 +16937,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -17481,6 +17509,7 @@ describe("ChatsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -19563,6 +19592,13 @@ describe("ChatsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], diff --git a/tests/wire/guardrailPacks.test.ts b/tests/wire/guardrailPacks.test.ts new file mode 100644 index 00000000..13978e60 --- /dev/null +++ b/tests/wire/guardrailPacks.test.ts @@ -0,0 +1,134 @@ +// This file was auto-generated by Fern from our API Definition. + +import { VapiClient } from "../../src/Client"; +import { mockServerPool } from "../mock-server/MockServerPool"; + +describe("GuardrailPacksClient", () => { + test("GuardrailPacksController_list", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = [ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + ruleIds: ["ruleIds"], + }, + ]; + + server.mockEndpoint().get("/guardrail/packs").respondWith().statusCode(200).jsonBody(rawResponseBody).build(); + + const response = await client.guardrailPacks.guardrailPacksControllerList(); + expect(response).toEqual([ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + ruleIds: ["ruleIds"], + }, + ]); + }); + + test("GuardrailPacksController_paginated", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + results: [ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + ruleIds: ["ruleIds"], + }, + ], + metadata: { + itemsPerPage: 1.1, + totalItems: 1.1, + currentPage: 1.1, + totalPages: 1.1, + hasNextPage: true, + nextCursor: "nextCursor", + sortOrder: "ASC", + itemsBeyondRetention: true, + createdAtLe: "2024-01-15T09:30:00Z", + createdAtGe: "2024-01-15T09:30:00Z", + }, + }; + + server + .mockEndpoint() + .get("/guardrail/packs/paginated") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.guardrailPacks.guardrailPacksControllerPaginated(); + expect(response).toEqual({ + results: [ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + ruleIds: ["ruleIds"], + }, + ], + metadata: { + itemsPerPage: 1.1, + totalItems: 1.1, + currentPage: 1.1, + totalPages: 1.1, + hasNextPage: true, + nextCursor: "nextCursor", + sortOrder: "ASC", + itemsBeyondRetention: true, + createdAtLe: "2024-01-15T09:30:00Z", + createdAtGe: "2024-01-15T09:30:00Z", + }, + }); + }); + + test("GuardrailPacksController_find", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + ruleIds: ["ruleIds"], + }; + + server + .mockEndpoint() + .get("/guardrail/packs/id") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.guardrailPacks.guardrailPacksControllerFind({ + id: "id", + }); + expect(response).toEqual({ + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + ruleIds: ["ruleIds"], + }); + }); +}); diff --git a/tests/wire/guardrailRules.test.ts b/tests/wire/guardrailRules.test.ts new file mode 100644 index 00000000..f9313d38 --- /dev/null +++ b/tests/wire/guardrailRules.test.ts @@ -0,0 +1,175 @@ +// This file was auto-generated by Fern from our API Definition. + +import { VapiClient } from "../../src/Client"; +import { mockServerPool } from "../mock-server/MockServerPool"; + +describe("GuardrailRulesClient", () => { + test("GuardrailRulesController_list", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = [ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + authoring: { mode: "always", behavior: "behavior", condition: "condition" }, + instructions: "instructions", + sensitivity: "low", + action: { mode: "fixed", type: "auto-response", text: "text" }, + }, + ]; + + server.mockEndpoint().get("/guardrail/rules").respondWith().statusCode(200).jsonBody(rawResponseBody).build(); + + const response = await client.guardrailRules.guardrailRulesControllerList(); + expect(response).toEqual([ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + authoring: { + mode: "always", + behavior: "behavior", + condition: "condition", + }, + instructions: "instructions", + sensitivity: "low", + action: { + mode: "fixed", + type: "auto-response", + text: "text", + }, + }, + ]); + }); + + test("GuardrailRulesController_paginated", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + results: [ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + authoring: { mode: "always", behavior: "behavior" }, + instructions: "instructions", + sensitivity: "low", + action: { mode: "fixed", type: "auto-response", text: "text" }, + }, + ], + metadata: { + itemsPerPage: 1.1, + totalItems: 1.1, + currentPage: 1.1, + totalPages: 1.1, + hasNextPage: true, + nextCursor: "nextCursor", + sortOrder: "ASC", + itemsBeyondRetention: true, + createdAtLe: "2024-01-15T09:30:00Z", + createdAtGe: "2024-01-15T09:30:00Z", + }, + }; + + server + .mockEndpoint() + .get("/guardrail/rules/paginated") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.guardrailRules.guardrailRulesControllerPaginated(); + expect(response).toEqual({ + results: [ + { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + authoring: { + mode: "always", + behavior: "behavior", + }, + instructions: "instructions", + sensitivity: "low", + action: { + mode: "fixed", + type: "auto-response", + text: "text", + }, + }, + ], + metadata: { + itemsPerPage: 1.1, + totalItems: 1.1, + currentPage: 1.1, + totalPages: 1.1, + hasNextPage: true, + nextCursor: "nextCursor", + sortOrder: "ASC", + itemsBeyondRetention: true, + createdAtLe: "2024-01-15T09:30:00Z", + createdAtGe: "2024-01-15T09:30:00Z", + }, + }); + }); + + test("GuardrailRulesController_find", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + authoring: { mode: "always", behavior: "behavior", condition: "condition" }, + instructions: "instructions", + sensitivity: "low", + action: { mode: "fixed", type: "auto-response", text: "text" }, + }; + + server + .mockEndpoint() + .get("/guardrail/rules/id") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.guardrailRules.guardrailRulesControllerFind({ + id: "id", + }); + expect(response).toEqual({ + id: "id", + orgId: "orgId", + createdAt: "2024-01-15T09:30:00Z", + updatedAt: "2024-01-15T09:30:00Z", + name: "name", + authoring: { + mode: "always", + behavior: "behavior", + condition: "condition", + }, + instructions: "instructions", + sensitivity: "low", + action: { + mode: "fixed", + type: "auto-response", + text: "text", + }, + }); + }); +}); diff --git a/tests/wire/sessions.test.ts b/tests/wire/sessions.test.ts index db72bf77..2dd87c7e 100644 --- a/tests/wire/sessions.test.ts +++ b/tests/wire/sessions.test.ts @@ -6597,6 +6597,7 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -6694,6 +6695,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -7133,6 +7135,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -9668,6 +9671,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value" }, scorecards: { key: "value" }, @@ -9711,6 +9715,13 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], @@ -9845,6 +9856,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -10416,6 +10428,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -13687,6 +13700,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value", @@ -13727,6 +13741,7 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -13824,6 +13839,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -14263,6 +14279,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -16798,6 +16815,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value" }, scorecards: { key: "value" }, @@ -16836,6 +16854,13 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], @@ -16970,6 +16995,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -17541,6 +17567,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -20812,6 +20839,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value", @@ -20852,6 +20880,7 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -20949,6 +20978,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -21388,6 +21418,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -23923,6 +23954,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value" }, scorecards: { key: "value" }, @@ -23961,6 +23993,13 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], @@ -24095,6 +24134,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -24666,6 +24706,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -27937,6 +27978,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value", @@ -27977,6 +28019,7 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [{ cost: 1.1, promptTokens: 1.1, completionTokens: 1.1 }], cost: 1.1, }, ], @@ -28074,6 +28117,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -28513,6 +28557,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -31048,6 +31093,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value" }, scorecards: { key: "value" }, @@ -31093,6 +31139,13 @@ describe("SessionsClient", () => { completionTokens: 1.1, cachedPromptTokens: 1.1, reasoningTokens: 1.1, + serviceTierBreakdown: [ + { + cost: 1.1, + promptTokens: 1.1, + completionTokens: 1.1, + }, + ], cost: 1.1, }, ], @@ -31227,6 +31280,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -31798,6 +31852,7 @@ describe("SessionsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -35069,6 +35124,7 @@ describe("SessionsClient", () => { toTransportLatencyAverage: 1.1, numUserInterrupted: 1.1, numAssistantInterrupted: 1.1, + turnLatencyUnmeasuredTracked: true, }, structuredOutputs: { key: "value", diff --git a/tests/wire/simulationPersonalities.test.ts b/tests/wire/simulationPersonalities.test.ts index 6275cb7b..8a657706 100644 --- a/tests/wire/simulationPersonalities.test.ts +++ b/tests/wire/simulationPersonalities.test.ts @@ -1025,6 +1025,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -1523,6 +1524,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -2071,6 +2073,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -2567,6 +2570,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -3115,6 +3119,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -3611,6 +3616,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -4180,6 +4186,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -4677,6 +4684,7 @@ describe("SimulationPersonalitiesClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, diff --git a/tests/wire/simulationRuns.test.ts b/tests/wire/simulationRuns.test.ts index b5b6ab3b..616476aa 100644 --- a/tests/wire/simulationRuns.test.ts +++ b/tests/wire/simulationRuns.test.ts @@ -30,6 +30,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -1307,6 +1308,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -2897,6 +2899,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -4158,6 +4161,7 @@ describe("SimulationRunsClient", () => { simulationRunItemIds: ["simulationRunItemIds"], message: "message", url: "url", + reused: true, }; server @@ -4199,6 +4203,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -5783,6 +5788,7 @@ describe("SimulationRunsClient", () => { simulationRunItemIds: ["simulationRunItemIds"], message: "message", url: "url", + reused: true, }); }); @@ -5821,6 +5827,41 @@ describe("SimulationRunsClient", () => { }).rejects.toThrow(Vapi.PaymentRequiredError); }); + test("SimulationRunController_create (3)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + simulations: [{ type: "simulation" }, { type: "simulation" }], + target: { type: "assistant" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/run") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationRuns.simulationRunControllerCreate({ + simulations: [ + { + type: "simulation", + }, + { + type: "simulation", + }, + ], + target: { + type: "assistant", + }, + }); + }).rejects.toThrow(Vapi.ConflictError); + }); + test("SimulationRunController_findOne", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); @@ -5845,6 +5886,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -7136,6 +7178,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -8744,6 +8787,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -10035,6 +10079,7 @@ describe("SimulationRunsClient", () => { distinctSimulationTotal: 1.1, distinctSimulationFailed: 1.1, }, + includeTargetStructuredOutputs: true, simulations: [ { type: "simulation", @@ -11678,6 +11723,9 @@ describe("SimulationRunsClient", () => { hooks: { key: "value" }, }, results: { + structuredOutputs: { key: { name: "name", result: null } }, + skippedStructuredOutputs: { key: { name: "name" } }, + structuredOutputError: "structuredOutputError", evaluations: [ { structuredOutputId: "structuredOutputId", @@ -11709,7 +11757,7 @@ describe("SimulationRunsClient", () => { scenarioSuggestions: [{ issue: "issue", suggestion: "suggestion" }], suggestedSystemPrompt: "suggestedSystemPrompt", }, - configurations: { transport: { provider: "vapi.websocket" } }, + configurations: { includeTargetStructuredOutputs: true, transport: { provider: "vapi.websocket" } }, }, ]; @@ -11801,6 +11849,18 @@ describe("SimulationRunsClient", () => { }, }, results: { + structuredOutputs: { + key: { + name: "name", + result: null, + }, + }, + skippedStructuredOutputs: { + key: { + name: "name", + }, + }, + structuredOutputError: "structuredOutputError", evaluations: [ { structuredOutputId: "structuredOutputId", @@ -11850,6 +11910,7 @@ describe("SimulationRunsClient", () => { suggestedSystemPrompt: "suggestedSystemPrompt", }, configurations: { + includeTargetStructuredOutputs: true, transport: { provider: "vapi.websocket", }, @@ -11917,6 +11978,9 @@ describe("SimulationRunsClient", () => { hooks: { key: "value" }, }, results: { + structuredOutputs: { key: { name: "name", result: null } }, + skippedStructuredOutputs: { key: { name: "name" } }, + structuredOutputError: "structuredOutputError", evaluations: [ { structuredOutputId: "structuredOutputId", @@ -11955,7 +12019,7 @@ describe("SimulationRunsClient", () => { scenarioSuggestions: [{ issue: "issue", suggestion: "suggestion" }], suggestedSystemPrompt: "suggestedSystemPrompt", }, - configurations: { transport: { provider: "vapi.websocket" } }, + configurations: { includeTargetStructuredOutputs: true, transport: { provider: "vapi.websocket" } }, }; server @@ -12055,6 +12119,18 @@ describe("SimulationRunsClient", () => { }, }, results: { + structuredOutputs: { + key: { + name: "name", + result: null, + }, + }, + skippedStructuredOutputs: { + key: { + name: "name", + }, + }, + structuredOutputError: "structuredOutputError", evaluations: [ { structuredOutputId: "structuredOutputId", @@ -12109,6 +12185,7 @@ describe("SimulationRunsClient", () => { suggestedSystemPrompt: "suggestedSystemPrompt", }, configurations: { + includeTargetStructuredOutputs: true, transport: { provider: "vapi.websocket", }, @@ -12175,6 +12252,9 @@ describe("SimulationRunsClient", () => { hooks: { key: "value" }, }, results: { + structuredOutputs: { key: { name: "name", result: null } }, + skippedStructuredOutputs: { key: { name: "name" } }, + structuredOutputError: "structuredOutputError", evaluations: [ { structuredOutputId: "structuredOutputId", @@ -12213,7 +12293,7 @@ describe("SimulationRunsClient", () => { scenarioSuggestions: [{ issue: "issue", suggestion: "suggestion" }], suggestedSystemPrompt: "suggestedSystemPrompt", }, - configurations: { transport: { provider: "vapi.websocket" } }, + configurations: { includeTargetStructuredOutputs: true, transport: { provider: "vapi.websocket" } }, }; server @@ -12313,6 +12393,18 @@ describe("SimulationRunsClient", () => { }, }, results: { + structuredOutputs: { + key: { + name: "name", + result: null, + }, + }, + skippedStructuredOutputs: { + key: { + name: "name", + }, + }, + structuredOutputError: "structuredOutputError", evaluations: [ { structuredOutputId: "structuredOutputId", @@ -12367,6 +12459,7 @@ describe("SimulationRunsClient", () => { suggestedSystemPrompt: "suggestedSystemPrompt", }, configurations: { + includeTargetStructuredOutputs: true, transport: { provider: "vapi.websocket", }, diff --git a/tests/wire/simulationScenarios.test.ts b/tests/wire/simulationScenarios.test.ts index d983bcfa..3ec38e09 100644 --- a/tests/wire/simulationScenarios.test.ts +++ b/tests/wire/simulationScenarios.test.ts @@ -1275,6 +1275,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -1877,6 +1878,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -2535,6 +2537,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -3129,6 +3132,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -3787,6 +3791,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -4381,6 +4386,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -5060,6 +5066,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -5655,6 +5662,7 @@ describe("SimulationScenariosClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, diff --git a/tests/wire/simulationSuites.test.ts b/tests/wire/simulationSuites.test.ts index 3485c93f..6b6575d2 100644 --- a/tests/wire/simulationSuites.test.ts +++ b/tests/wire/simulationSuites.test.ts @@ -321,4 +321,966 @@ describe("SimulationSuitesClient", () => { ], }); }); + + test("SimulationOnboardingController_requirementsDraft (1)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { + version: 1.1, + changeNote: "changeNote", + sources: ["sources"], + requirements: [{ id: "id", text: "text", tag: "assumption", note: "note" }], + openQuestions: [{ id: "id", text: "text", why: "why" }], + }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + expect(response).toEqual({ + version: 1.1, + changeNote: "changeNote", + sources: ["sources"], + requirements: [ + { + id: "id", + text: "text", + tag: "assumption", + note: "note", + }, + ], + openQuestions: [ + { + id: "id", + text: "text", + why: "why", + }, + ], + }); + }); + + test("SimulationOnboardingController_requirementsDraft (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.BadRequestError); + }); + + test("SimulationOnboardingController_requirementsDraft (3)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(403) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.ForbiddenError); + }); + + test("SimulationOnboardingController_requirementsDraft (4)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.NotFoundError); + }); + + test("SimulationOnboardingController_requirementsDraft (5)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { code: "SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS", message: "message" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(429) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.TooManyRequestsError); + }); + + test("SimulationOnboardingController_requirementsDraft (6)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(502) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.BadGatewayError); + }); + + test("SimulationOnboardingController_requirementsDraft (7)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(503) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.ServiceUnavailableError); + }); + + test("SimulationOnboardingController_requirementsDraft (8)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { assistantId: "assistantId" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/requirements") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(504) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerRequirementsDraft({ + assistantId: "assistantId", + }); + }).rejects.toThrow(Vapi.GatewayTimeoutError); + }); + + test("SimulationOnboardingController_suiteCreate (1)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "idempotencyKey", + requirements: [{ id: "id", text: "text" }], + }; + const rawResponseBody = { + suite: { id: "id", name: "name" }, + assistantId: "assistantId", + simulations: [ + { + id: "id", + scenarioId: "scenarioId", + name: "name", + personalityName: "personalityName", + successCriteria: ["successCriteria"], + requirementIds: ["requirementIds"], + mockedTools: ["mockedTools"], + }, + ], + coverage: { + covered: 1.1, + total: 1.1, + gaps: [{ requirementId: "requirementId", reason: "not-testable" }], + retryable: 1.1, + }, + requirements: [{ id: "id", text: "text", tag: "assumption", note: "note" }], + docs: { bestPractices: "bestPractices", toolMocks: "toolMocks" }, + reused: true, + failedEditSimulationIds: ["failedEditSimulationIds"], + toolGaps: [ + { + toolName: "toolName", + assistantName: "assistantName", + reason: "dynamic-handoff", + destinationNames: ["destinationNames"], + }, + ], + }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "idempotencyKey", + requirements: [ + { + id: "id", + text: "text", + }, + ], + }); + expect(response).toEqual({ + suite: { + id: "id", + name: "name", + }, + assistantId: "assistantId", + simulations: [ + { + id: "id", + scenarioId: "scenarioId", + name: "name", + personalityName: "personalityName", + successCriteria: ["successCriteria"], + requirementIds: ["requirementIds"], + mockedTools: ["mockedTools"], + }, + ], + coverage: { + covered: 1.1, + total: 1.1, + gaps: [ + { + requirementId: "requirementId", + reason: "not-testable", + }, + ], + retryable: 1.1, + }, + requirements: [ + { + id: "id", + text: "text", + tag: "assumption", + note: "note", + }, + ], + docs: { + bestPractices: "bestPractices", + toolMocks: "toolMocks", + }, + reused: true, + failedEditSimulationIds: ["failedEditSimulationIds"], + toolGaps: [ + { + toolName: "toolName", + assistantName: "assistantName", + reason: "dynamic-handoff", + destinationNames: ["destinationNames"], + }, + ], + }); + }); + + test("SimulationOnboardingController_suiteCreate (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.BadRequestError); + }); + + test("SimulationOnboardingController_suiteCreate (3)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(403) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.ForbiddenError); + }); + + test("SimulationOnboardingController_suiteCreate (4)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.NotFoundError); + }); + + test("SimulationOnboardingController_suiteCreate (5)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.ConflictError); + }); + + test("SimulationOnboardingController_suiteCreate (6)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.UnprocessableEntityError); + }); + + test("SimulationOnboardingController_suiteCreate (7)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { code: "SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS", message: "message" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(429) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.TooManyRequestsError); + }); + + test("SimulationOnboardingController_suiteCreate (8)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(502) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.BadGatewayError); + }); + + test("SimulationOnboardingController_suiteCreate (9)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(503) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.ServiceUnavailableError); + }); + + test("SimulationOnboardingController_suiteCreate (10)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { id: "id", text: "text" }, + { id: "id", text: "text" }, + ], + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/eval/simulation/onboarding/suite") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(504) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteCreate({ + assistantId: "assistantId", + idempotencyKey: "x", + requirements: [ + { + id: "id", + text: "text", + }, + { + id: "id", + text: "text", + }, + ], + }); + }).rejects.toThrow(Vapi.GatewayTimeoutError); + }); + + test("SimulationOnboardingController_suiteUpdate (1)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "patchKey" }; + const rawResponseBody = { + suite: { id: "id", name: "name" }, + assistantId: "assistantId", + simulations: [ + { + id: "id", + scenarioId: "scenarioId", + name: "name", + personalityName: "personalityName", + successCriteria: ["successCriteria"], + requirementIds: ["requirementIds"], + mockedTools: ["mockedTools"], + }, + ], + coverage: { + covered: 1.1, + total: 1.1, + gaps: [{ requirementId: "requirementId", reason: "not-testable" }], + retryable: 1.1, + }, + requirements: [{ id: "id", text: "text", tag: "assumption", note: "note" }], + docs: { bestPractices: "bestPractices", toolMocks: "toolMocks" }, + reused: true, + failedEditSimulationIds: ["failedEditSimulationIds"], + toolGaps: [ + { + toolName: "toolName", + assistantName: "assistantName", + reason: "dynamic-handoff", + destinationNames: ["destinationNames"], + }, + ], + }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "patchKey", + }); + expect(response).toEqual({ + suite: { + id: "id", + name: "name", + }, + assistantId: "assistantId", + simulations: [ + { + id: "id", + scenarioId: "scenarioId", + name: "name", + personalityName: "personalityName", + successCriteria: ["successCriteria"], + requirementIds: ["requirementIds"], + mockedTools: ["mockedTools"], + }, + ], + coverage: { + covered: 1.1, + total: 1.1, + gaps: [ + { + requirementId: "requirementId", + reason: "not-testable", + }, + ], + retryable: 1.1, + }, + requirements: [ + { + id: "id", + text: "text", + tag: "assumption", + note: "note", + }, + ], + docs: { + bestPractices: "bestPractices", + toolMocks: "toolMocks", + }, + reused: true, + failedEditSimulationIds: ["failedEditSimulationIds"], + toolGaps: [ + { + toolName: "toolName", + assistantName: "assistantName", + reason: "dynamic-handoff", + destinationNames: ["destinationNames"], + }, + ], + }); + }); + + test("SimulationOnboardingController_suiteUpdate (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.BadRequestError); + }); + + test("SimulationOnboardingController_suiteUpdate (3)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(403) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.ForbiddenError); + }); + + test("SimulationOnboardingController_suiteUpdate (4)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.NotFoundError); + }); + + test("SimulationOnboardingController_suiteUpdate (5)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.UnprocessableEntityError); + }); + + test("SimulationOnboardingController_suiteUpdate (6)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { code: "SIMULATION_ONBOARDING_GENERATION_IN_PROGRESS", message: "message" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(429) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.TooManyRequestsError); + }); + + test("SimulationOnboardingController_suiteUpdate (7)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(502) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.BadGatewayError); + }); + + test("SimulationOnboardingController_suiteUpdate (8)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(503) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.ServiceUnavailableError); + }); + + test("SimulationOnboardingController_suiteUpdate (9)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { patchKey: "x" }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/eval/simulation/onboarding/suite/suiteId") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(504) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.simulationSuites.simulationOnboardingControllerSuiteUpdate({ + suiteId: "suiteId", + patchKey: "x", + }); + }).rejects.toThrow(Vapi.GatewayTimeoutError); + }); }); diff --git a/tests/wire/simulations.test.ts b/tests/wire/simulations.test.ts index cd1397f1..96eb9ab7 100644 --- a/tests/wire/simulations.test.ts +++ b/tests/wire/simulations.test.ts @@ -4,38 +4,6 @@ import { VapiClient } from "../../src/Client"; import { mockServerPool } from "../mock-server/MockServerPool"; describe("SimulationsClient", () => { - test("SimulationGenerateController_generate", async () => { - const server = mockServerPool.createServer(); - const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - const rawRequestBody = {}; - const rawResponseBody = { - scenarios: [{ name: "name", instructions: "instructions", category: "happy_path", reasoning: "reasoning" }], - coverageNotes: "coverageNotes", - }; - - server - .mockEndpoint() - .post("/eval/simulation/scenario/generate") - .jsonBody(rawRequestBody) - .respondWith() - .statusCode(200) - .jsonBody(rawResponseBody) - .build(); - - const response = await client.simulations.simulationGenerateControllerGenerate(); - expect(response).toEqual({ - scenarios: [ - { - name: "name", - instructions: "instructions", - category: "happy_path", - reasoning: "reasoning", - }, - ], - coverageNotes: "coverageNotes", - }); - }); - test("SimulationController_findAll", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); diff --git a/tests/wire/squads.test.ts b/tests/wire/squads.test.ts index 471e7437..2564c27c 100644 --- a/tests/wire/squads.test.ts +++ b/tests/wire/squads.test.ts @@ -3744,6 +3744,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -5292,6 +5293,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -6706,6 +6708,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -8247,6 +8250,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -9661,6 +9665,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -11202,6 +11207,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, @@ -12616,6 +12622,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1 }, temperature: 1.1, maxTokens: 1.1, @@ -14165,6 +14172,7 @@ describe("SquadsClient", () => { }, }, model: "claude-3-opus-20240229", + reasoningEffort: "none", thinking: { type: "enabled", budgetTokens: 1.1, diff --git a/tests/wire/structuredOutputs.test.ts b/tests/wire/structuredOutputs.test.ts index bc91af0f..5d8725f0 100644 --- a/tests/wire/structuredOutputs.test.ts +++ b/tests/wire/structuredOutputs.test.ts @@ -1,5 +1,6 @@ // This file was auto-generated by Fern from our API Definition. +import * as Vapi from "../../src/api/index"; import { VapiClient } from "../../src/Client"; import { mockServerPool } from "../mock-server/MockServerPool"; @@ -97,7 +98,7 @@ describe("StructuredOutputsClient", () => { }); }); - test("StructuredOutputController_create", async () => { + test("StructuredOutputController_create (1)", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); const rawRequestBody = { name: "name", schema: { type: "string" } }; @@ -108,6 +109,7 @@ describe("StructuredOutputsClient", () => { provider: "openai", messages: [{ content: null, role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -162,6 +164,7 @@ describe("StructuredOutputsClient", () => { }, ], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -198,6 +201,31 @@ describe("StructuredOutputsClient", () => { }); }); + test("StructuredOutputController_create (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { name: "x", schema: { type: "string" } }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/structured-output") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.structuredOutputs.structuredOutputControllerCreate({ + name: "x", + schema: { + type: "string", + }, + }); + }).rejects.toThrow(Vapi.ConflictError); + }); + test("StructuredOutputController_findOne", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); @@ -209,6 +237,7 @@ describe("StructuredOutputsClient", () => { provider: "openai", messages: [{ content: null, role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -259,6 +288,7 @@ describe("StructuredOutputsClient", () => { }, ], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -295,7 +325,7 @@ describe("StructuredOutputsClient", () => { }); }); - test("StructuredOutputController_remove", async () => { + test("StructuredOutputController_remove (1)", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); @@ -306,6 +336,7 @@ describe("StructuredOutputsClient", () => { provider: "openai", messages: [{ content: null, role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -356,6 +387,7 @@ describe("StructuredOutputsClient", () => { }, ], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -392,7 +424,28 @@ describe("StructuredOutputsClient", () => { }); }); - test("StructuredOutputController_update", async () => { + test("StructuredOutputController_remove (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .delete("/structured-output/id") + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.structuredOutputs.structuredOutputControllerRemove({ + id: "id", + }); + }).rejects.toThrow(Vapi.ConflictError); + }); + + test("StructuredOutputController_update (1)", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); const rawRequestBody = {}; @@ -403,6 +456,7 @@ describe("StructuredOutputsClient", () => { provider: "openai", messages: [{ content: null, role: "assistant" }], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -455,6 +509,7 @@ describe("StructuredOutputsClient", () => { }, ], model: "gpt-6-luna", + reasoningEffort: "minimal", temperature: 1.1, maxTokens: 1.1, }, @@ -491,13 +546,34 @@ describe("StructuredOutputsClient", () => { }); }); + test("StructuredOutputController_update (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/structured-output/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.structuredOutputs.structuredOutputControllerUpdate({ + id: "id", + schemaOverride: "schemaOverride", + }); + }).rejects.toThrow(Vapi.ConflictError); + }); + test("StructuredOutputController_run", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); const rawRequestBody = { callIds: ["callIds"] }; - const rawResponseBody = { - skipped: { key: { name: "name", unmetCondition: { type: "minMessages", count: 4 } } }, - }; + const rawResponseBody = { workflowId: "workflowId", message: "message" }; server .mockEndpoint() @@ -512,15 +588,8 @@ describe("StructuredOutputsClient", () => { callIds: ["callIds"], }); expect(response).toEqual({ - skipped: { - key: { - name: "name", - unmetCondition: { - type: "minMessages", - count: 4, - }, - }, - }, + workflowId: "workflowId", + message: "message", }); }); }); diff --git a/tests/wire/tools.test.ts b/tests/wire/tools.test.ts index 618fa968..249b0636 100644 --- a/tests/wire/tools.test.ts +++ b/tests/wire/tools.test.ts @@ -13,6 +13,7 @@ describe("ToolsClient", () => { { type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [{ type: "request-start", blocking: false }], name: "name", method: "POST", @@ -70,6 +71,7 @@ describe("ToolsClient", () => { { type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -165,6 +167,7 @@ describe("ToolsClient", () => { const rawResponseBody = { type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -250,6 +253,7 @@ describe("ToolsClient", () => { expect(response).toEqual({ type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -365,6 +369,7 @@ describe("ToolsClient", () => { const rawResponseBody = { type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -441,6 +446,7 @@ describe("ToolsClient", () => { expect(response).toEqual({ type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -556,6 +562,7 @@ describe("ToolsClient", () => { const rawResponseBody = { type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -632,6 +639,7 @@ describe("ToolsClient", () => { expect(response).toEqual({ type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -762,6 +770,7 @@ describe("ToolsClient", () => { const rawResponseBody = { type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", @@ -848,6 +857,7 @@ describe("ToolsClient", () => { expect(response).toEqual({ type: "apiRequest", latestVersion: "latestVersion", + baselineVersion: "baselineVersion", messages: [ { type: "request-start", diff --git a/tests/wire/trafficAllocations.test.ts b/tests/wire/trafficAllocations.test.ts index 188d4e1d..dc67a32c 100644 --- a/tests/wire/trafficAllocations.test.ts +++ b/tests/wire/trafficAllocations.test.ts @@ -333,6 +333,169 @@ describe("TrafficAllocationsClient", () => { }).rejects.toThrow(Vapi.ForbiddenError); }); + test("TrafficAllocationController_metricsGet (1)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + window: { from: "from", to: "to", bucket: "hour" }, + totalCalls: 1.1, + currentAllocation: { + id: "id", + orgId: "orgId", + assistantId: "assistantId", + allocationIntent: "follow-latest", + createdAt: "2024-01-15T09:30:00Z", + actorType: "user", + actorId: "actorId", + actorEmail: "actorEmail", + description: "description", + targets: [{ assistantVersion: "assistantVersion", position: 1.1, percentage: 1.1 }], + }, + versions: [ + { + assistantVersionId: "assistantVersionId", + assistantVersionLabel: "assistantVersionLabel", + unversioned: true, + calls: 1.1, + configuredPercentage: 1.1, + actualPercentage: 1.1, + durationSeconds: {}, + costPerMinute: { breakdown: {} }, + latencyMs: { model: {}, voice: {}, transcriber: {}, turn: {} }, + endedReasons: [{ reason: "reason", count: 1.1 }], + timeseries: [{ bucketStart: "bucketStart", calls: 1.1 }], + structuredOutputs: [{ structuredOutputId: "structuredOutputId", type: "number", present: 1.1 }], + }, + ], + }; + + server + .mockEndpoint() + .get("/traffic-allocations/metrics") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.trafficAllocations.trafficAllocationControllerMetricsGet({ + assistantId: "assistantId", + from: "2024-01-15T09:30:00Z", + to: "2024-01-15T09:30:00Z", + }); + expect(response).toEqual({ + window: { + from: "from", + to: "to", + bucket: "hour", + }, + totalCalls: 1.1, + currentAllocation: { + id: "id", + orgId: "orgId", + assistantId: "assistantId", + allocationIntent: "follow-latest", + createdAt: "2024-01-15T09:30:00Z", + actorType: "user", + actorId: "actorId", + actorEmail: "actorEmail", + description: "description", + targets: [ + { + assistantVersion: "assistantVersion", + position: 1.1, + percentage: 1.1, + }, + ], + }, + versions: [ + { + assistantVersionId: "assistantVersionId", + assistantVersionLabel: "assistantVersionLabel", + unversioned: true, + calls: 1.1, + configuredPercentage: 1.1, + actualPercentage: 1.1, + durationSeconds: {}, + costPerMinute: { + breakdown: {}, + }, + latencyMs: { + model: {}, + voice: {}, + transcriber: {}, + turn: {}, + }, + endedReasons: [ + { + reason: "reason", + count: 1.1, + }, + ], + timeseries: [ + { + bucketStart: "bucketStart", + calls: 1.1, + }, + ], + structuredOutputs: [ + { + structuredOutputId: "structuredOutputId", + type: "number", + present: 1.1, + }, + ], + }, + ], + }); + }); + + test("TrafficAllocationController_metricsGet (2)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .get("/traffic-allocations/metrics") + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.trafficAllocations.trafficAllocationControllerMetricsGet({ + assistantId: "assistantId", + from: "2024-01-15T09:30:00Z", + to: "2024-01-15T09:30:00Z", + }); + }).rejects.toThrow(Vapi.BadRequestError); + }); + + test("TrafficAllocationController_metricsGet (3)", async () => { + const server = mockServerPool.createServer(); + const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .get("/traffic-allocations/metrics") + .respondWith() + .statusCode(403) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.trafficAllocations.trafficAllocationControllerMetricsGet({ + assistantId: "assistantId", + from: "2024-01-15T09:30:00Z", + to: "2024-01-15T09:30:00Z", + }); + }).rejects.toThrow(Vapi.ForbiddenError); + }); + test("TrafficAllocationController_findOne (1)", async () => { const server = mockServerPool.createServer(); const client = new VapiClient({ maxRetries: 0, token: "test", environment: server.baseUrl });