Get the (almost) daily changelog

Background Speech Denoising, Cartesia Transcriber, Workflow Enhancements, and Call Error Handling

  1. Background Speech Denoising Plan: You can now enhance call quality by configuring advanced background speech denoising options using the new assistant.backgroundSpeechDenoisingPlan.smartDenoisingPlan (default: false), which replaces the previous backgroundDenoisingEnabled setting.
Enable Smart Denoising (Krisp)

Use the SmartDenoisingPlan to filter out background speech and noise using Krisp technology.

Customize Fourier Denoising

Fine-tune noise reduction with the new FourierDenoisingPlan for more control over audio clarity.

Smart and Fourier denoising can be combined for optimal results. Order of precedence: Smart denoising, then Fourier denoising.

  1. Workflow Server Property: Workflows now support a server property, allowing you to specify a server URL to receive webhook callbacks for workflow events directly.

  2. New Workflow Models: You can now integrate Google’s LLMs or custom models into your workflows by specifying Google or Custom LLM in your workflow model settings. Select your model under Model Settings

Workflow Google Custom LLM
Workflow Google Custom LLM
  1. Enhanced Error Reporting for Cartesia Services: A new endedReason value pipeline-error-cartesia-502-server-error has been added to help you identify and handle specific errors related to Cartesia server issues.

  2. Enhanced Error Handling and Status Enums: We’ve added new error enums and status codes to help you better handle and debug call-related issues:

    • VAPI Fault Errors: Detect specific VAPI-related errors during call start using call.start.error-vapifault-get-org and call.start.error-vapifault-get-subscription

    • Subscription Status Errors: Identify subscription-related issues with new enums:

      • call.start.error-subscription-frozen (replaces unknown-error)
      • call.start.error-subscription-insufficient-credits
    • Call Completion Statuses: Track how calls are completed with new enums:

      • call.in-progress.twilio-completed-call
      • call.in-progress.sip-completed-call
    • In-Call Error Detection: Handle specific errors during active calls using enums like call.in-progress.error-vapifault-chat-pipeline-failed-to-start

Assembly AI Transcriber Improvements, chat cost tracking, and API tool enhancements

  1. Chat Cost Tracking: You can now access detailed cost information per Chat and Call, including total and per-component breakdowns. Use Call.cost and Chat.cost to get the total cost, and Call.costs and Chat.costs to get the breakdown.`
Chat Schema (excerpt)
1{
2 "cost": 0.12,
3 "costs": [
4 { "type": "model", "cost": 0.22 },
5 { "type": "chat", "cost": 0.10 },
6 ]
7}
  1. Enhanced AssemblyAI Transcriber Configuration: You can now fine-tune the AssemblyAI transcriber with:
  • maxTurnSilence: The maximum amount of silence in milliseconds before a turn is considered complete.
  • endOfTurnConfidenceThreshold: The confidence threshold for determining the end of a turn.
  • minEndOfTurnSilenceWhenConfident: The minimum amount of silence in milliseconds before a turn is considered complete when the confidence is high.
  • wordFinalizationMaxWaitTime: The maximum amount of time in milliseconds to wait for word finalization.
  1. New Cartesia Transcriber Option: You can now use the Cartesia “Ink Whisper” transcriber for your for assistants and workflow nodes using Assistant.transcriber and ConversationNode.transcriber. Set this in your Vapi Assistant dashboard today.
Cartesia Transcriber
Cartesia Transcriber
  1. API Request Tool Variable Extraction: You can now use assistant.model.tools[type=apiRequest].variableExtractionPlan to extract and validate variables from API responses by defining a variable schema.

New Ended Reasons for SIP Inbound Calls

You can now handle SIP inbound call failures with two new endedReason values:

  • call.ringing.sip-inbound-caller-hungup-before-call-connect: Use this when a caller hangs up before the call connects
  • call.ringing.error-sip-inbound-call-failed-to-connect: Use this when there’s a connection error

These values are available in all call event schemas, including Call, ServerMessageStatusUpdate, and ServerMessageEndOfCallReport. Implement precise error handling for your SIP inbound calls by checking for these specific failure scenarios.

Workflows Out of Beta and Gladia Transcriptions

  1. Workflows Are Out of Beta: You can now use workflows in production as we’ve removed all [BETA] labels from workflow-related properties and API endpoints. See Workflow API Documentation for complete details.

  2. Per-Call Workflow Customization with Overrides: You can now customize workflows on a per-call basis using the new Call.workflowOverrides property. Override workflow settings and template variables using LiquidJS syntax. See Workflow Documentation for details.

  3. Enhanced Gladia Transcriptions: You can now transcribe audio in multiple languages using the new languages property in GladiaTranscriber and FallbackGladiaTranscriber (when languageBehaviour is manual). You can also use the new solaria-1 transcription model for potentially improved results. Learn more in our Transcription Documentation.

Assistant Configuration Updates

  1. Set Minimum Messages for Analysis: Skip analysis for very short conversations by setting Assistant.analysisPlan.minMessagesThreshold (default: 2).

  2. Configure Transfer Timeout: You can now set the timeout for warm transfer modes with Assistant.hooks.do[type=transfer].destination.transferPlan.timeout (default: 60). Warm transfer modes allow for a smooth handoff between agents by maintaining context and conversation history during the transfer process.

    This timeout setting determines how long the system will wait for the transfer to complete before timing out.

  3. Enable AssemblyAI Universal Streaming API: You can now enable the new Universal Streaming API for AssemblyAI transcribers with Assistant.transcriber.enableUniversalStreamingApi and Assistant.transcriber.fallbackPlan.transcribers.enableUniversalStreamingApi.

    Set this to true to use AssemblyAI’s new Universal Streaming API for improved transcription.

Removal of regex in JsonSchema: You can no longer use regular expressions in your JSON schema validations.

Dot paths affected:

  • assistant.analysisPlan.structuredDataPlan.schema.regex
  • assistant.hooks.do[type=function].function.parameters.properties.regex
  • assistant.model.tools[type=apiRequest].body.regex
  • assistant.model.tools[type=apiRequest].headers.regex

Azure OpenAI Compatibility Mode and JSON Schema Updates

  1. toolStrictCompatibilityMode for Azure OpenAI Models: Added a new option to handle Azure OpenAI’s validation limitations. Set toolStrictCompatibilityMode in your OpenAIModel config to either:
    • strip-parameters-with-unsupported-validation: Removes entire parameters that have unsupported validations
    • strip-unsupported-validation: Keeps parameters but removes unsupported validation aspects Default is strip-unsupported-validation.

SIP Call Error Handling Updates

The following specific SIP error codes have been added to help identify call failures:

The generic error code call.in-progress.error-sip-telephony-provider-failed-to-connect-call has been removed. Update your error handling to use the new specific error codes instead.

Session and Workflow Enhancements

  1. Addition of expirationSeconds to Session Schemas: You can now set custom session expiration times using the expirationSeconds property when creating or updating sessions. This allows sessions to expire anywhere between 1 minute and 30 days, providing greater control over session lifecycles.

  2. Introduction of globalPrompt in Workflow Schemas: A new globalPrompt property allows you to define a default prompt for entire workflows. By setting a globalPrompt up to 5,000 characters, you can streamline your workflow configurations without setting prompts for each individual node.

  1. Removal of language Property in Voice Settings: The language property has been removed from the VapiVoice and FallbackVapiVoice configurations. You no longer need to set language when configuring voice settings; voice language may now be handled automatically or through a different configuration.

  2. Introduction of Detailed Node Artifacts: A new NodeArtifact schema has been added, accessible via call.artifact.nodes, providing detailed information about each node in a call’s workflow. You can now access messages, node names, and variables for each node to gain deeper insights into call executions.

  3. Addition of nodes and variables to Call Artifacts: The Artifact schema now includes nodes and variables properties, enhancing the data available in call.artifact. This allows you to retrieve the history of executed workflow nodes and the final state of variables after a call.

  4. Removal of Metrics Schema: The Metrics schema has been completely removed. If your application relies on Metrics, you will need to update your code to accommodate this change and explore alternative solutions.

  5. Update Voice Configuration Paths: With the changes to voice configurations, paths like assistant.voice and call.squad.members.assistant.voice may require updates. Ensure your configurations align with the new schema definitions and remove any references to the deprecated language property.

  6. Enable Recording in Artifacts: To access call recordings in your artifacts, set assistant.artifactPlan.recordingEnabled in your configuration. This enables the recording property in call.artifact, allowing you to review call recordings for analysis or debugging.