{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/voice-2.0/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"product":"Voice v2 (preview)","type":"markdown"},"seo":{"title":"What’s new in Voice API v2?","siteUrl":"https://developers.sinch.com","llmstxt":{"title":"Sinch Developer Documentation","description":"LLMs.txt containing a map of all the documentation files for Sinch.","sections":[{"title":"Numbers API","description":"The Numbers API enables you to search for, view, and activate numbers. It's considered a precursor to other APIs in the Sinch product family. The numbers API can be used in tandem with any of our APIs that perform messaging or calling.","includeFiles":["docs/numbers/**/*.md","docs/numbers/**/*.yaml"],"excludeFiles":["docs/numbers/index.md"]},{"title":"Conversation API","description":"Send and receive messages globally on many popular channels with ease and confidence when using Sinch's Conversation API. Conversation API is the preferred API for sending mobile messages on SMS and other social channels with Sinch. It is a simple API with unified error messages, consistent request payloads, and common webhook payloads that are channel-agnostic.","includeFiles":["docs/conversation/**/*.md","docs/conversation/**/*.yaml"],"excludeFiles":["docs/conversation/index.md"]},{"title":"Voice API","description":"The Voice API works as a big telephony switch. The Voice API handles incoming phone calls (also known as incoming call “legs”), sets up outgoing phone calls (or outgoing call “legs”), and bridges the two. The incoming call leg may come in over a data connection (from a smartphone or web application using the Sinch SDKs) or through a local phone number (from the PSTN network). Similarly, the outgoing call leg can be over data (to another smartphone or web application using the Sinch SDKs) or the PSTN network.","includeFiles":["docs/voice/**/*.md","docs/voice/**/*.yaml"],"excludeFiles":["docs/voice/index.md"]},{"title":"Voice API v2","description":"The Voice API works as a big telephony switch. The Voice API handles incoming phone calls (also known as incoming call “legs”), sets up outgoing phone calls (or outgoing call “legs”), and bridges the two. The incoming call leg may come in over a data connection (from a smartphone or web application using the Sinch SDKs) or through a local phone number (from the PSTN network). Similarly, the outgoing call leg can be over data (to another smartphone or web application using the Sinch SDKs) or the PSTN network.","includeFiles":["docs/voice-2.0/**/*.md","docs/voice-2.0/**/*.yaml"],"excludeFiles":["docs/voice-2.0/index.md"]},{"title":"Verification API","description":"The Verification API is a platform for phone number verification. It consists of the API and different software development kits (the Sinch SDKs) that you integrate with your smartphone or web application and cloud based back-end services. Together they enable SMS, Flashcall, Phone Call and Data verification in your application.","includeFiles":["docs/verification/**/*.md","docs/verification/**/*.yaml"],"excludeFiles":["docs/verification/index.md"]},{"title":"Provisioning API","description":"Provisioning API allows you to programmatically set up your senders, accounts and templates on your favorite messaging platforms on the Conversation API. For now, you can create your first WhatsApp channel through Meta's Embedded sign up, you can configure your first SMS App and configure your webhooks. As development continues, we will be adding the most commonly used channels.","includeFiles":["docs/provisioning-api/**/*.md","docs/provisioning-api/**/*.json"],"excludeFiles":["docs/provisioning-api/index.md"]},{"title":"Elastic SIP Trunking API","description":"With Elastic SIP Trunking you can create and manage your SIP trunks and phone numbers programmatically.","includeFiles":["docs/est/**/*.md","docs/est/**/*.yaml"],"excludeFiles":["docs/est/index.md"]},{"title":"Fax API","description":"Send and receive HIPAA compliant faxes on our modern fax platform using our developer-friendly API.","includeFiles":["docs/fax/**/*.md","docs/fax/**/*.yaml"],"excludeFiles":["docs/fax/index.md"]},{"title":"In-app Voice and Video SDK","description":"The In-app Voice and Video SDK enables you to add voice and video calling capabilities directly into your mobile or web application using the Sinch SDKs.","includeFiles":["docs/in-app-calling/**/*.md"],"excludeFiles":["docs/in-app-calling/index.md"]},{"title":"Number Lookup API","description":"The Number Lookup API is designed to provide in-depth information about phone numbers, helping enterprises enhance their communication strategies and prevent fraud. By identifying the type of phone line (for example, mobile, landline, VoIP) and the associated carrier, the API allows businesses to optimize routing, reduce unnecessary costs, and improve customer engagement.","includeFiles":["docs/number-lookup-api-v2/**/*.md","docs/number-lookup-api-v2/**/*.yaml"],"excludeFiles":["docs/number-lookup-api-v2/index.md"]},{"title":"Functions","description":"Serverless compute for voice and messaging. Deploy your code and Sinch routes live calls and messages to it — no infrastructure to run.","includeFiles":["docs/functions/functions/**/*.md","docs/functions/concepts/**/*.md","docs/functions/reference/**/*.md"],"excludeFiles":["docs/functions/functions/index.md"]},{"title":"CLI","description":"One command line for every Sinch API and the full Functions lifecycle — scaffold, run locally, deploy, and manage.","includeFiles":["docs/functions/cli/**/*.md"],"excludeFiles":["docs/functions/cli/index.md"]}]},"description":"Read about the reason to use voice v2 instead of Voice v1"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"whats-new-in-voice-api-v2","__idx":0},"children":["What’s new in Voice API v2?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Voice API v2 is a ground-up redesign that gives developers total flexibility, native AI integration, and a cleaner architecture for building modern voice applications. Here’s what’s new:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"redesigned-call-model-sessions-calls--bridges","__idx":1},"children":["Redesigned Call Model (Sessions, Calls, & Bridges)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We have replaced the flat, call-leg model of V1 with a robust, hierarchical architecture that matches how real-world voice applications operate:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sessions: A session acts as a master container that initializes automatically as soon as the first call is created. It groups all related calls and connections together and maintains state and context throughout the entire interaction lifecycle until all associated calls are terminated."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Calls (The Core Resource): A Call represents a single participant's connection (such as PSTN, SIP, Streams or Voice Relay) to Sinch."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Inbound Calls: Created automatically when a call arrives via a Sinch voice channel. These are handled via a service webhook or dashboard configuration."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Outbound Calls: Initiated via a direct API request or dynamically inside an active session using the SVAML dial command."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Developer Power: You can interact with and control active calls in real time using the new PATCH endpoints—either by target callId or cleanly by scoping sessionId and callName."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Bridges: A mechanism to dynamically connect one or more calls within a session, enabling immediate, seamless communication and routing between different participants."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"svaml-v2-powerful-serverless--dynamic-call-control","__idx":2},"children":["SVAML v2: Powerful Serverless & Dynamic Call Control"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SVAML (Sinch Voice API Markup Language) has been completely overhauled. It is no longer instructions and actions; it is a powerful, nestable language designed for both standalone and dynamically routed call flows."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Core Architectural Capabilities:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Serverless Execution via Nested Events: You can now define comprehensive flows entirely within a single API payload. Because events (like onAnswer or onFail) are nested directly within the JSON, you can execute complex branching logic with no webhook round-trips required."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Dynamic Routing via Webhooks: For highly dynamic, stateful, or database-driven use cases, you can use the webhook command to intentionally pause call execution and hand control back to your backend, expecting a new set of SVAML commands in response."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Blocking vs. Non-Blocking Commands: V2 introduces precise execution models. Non-blocking commands (like dial, messages, amd) fire and run in parallel, while blocking commands (like webhook, pause, menu) pause execution until they complete."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Built-in Payload Validation: Use the new /svaml/validate and /svaml/describe endpoints to test your nested JSON structures against strict schemas before production, eliminating runtime routing errors."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Built-In Command Features:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Answering Machine Detection (AMD): Use the amd command to automatically classify calls as human, machine, beep, or unknown, natively triggering nested event handlers based on the result."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rich IVR & Media (TTS): Build native IVR trees using the menu and gotoMenu commands, featuring built-in DTMF gathering, regex matching, timeouts, and barge-in. Dynamically manage media mid-call with messages (featuring SAY for Text-to-Speech and PLAY for audio) and stopMessages."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Native Cloud Recording: Use the startRecording command to push call audio and automatic transcriptions directly to AWS S3, Google Cloud Storage (GCP), or Azure Blob out of the box."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"native-ai-capabilities--real-time-streams","__idx":3},"children":["Native AI Capabilities & Real-Time Streams"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Voice-enable your AI agents natively without writing complex code. V2 ships with dedicated AI integration paths built directly into the API core:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Voice Relay: A powerful WebSocket bridge that streams real-time speech-to-text (STT) to your AI agent and plays back text-to-speech (TTS) responses with native barge-in and interruption detection."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Raw Audio Streaming: Pipe bidirectional, raw PCM audio streams directly to your WebSocket endpoint if you prefer to bring your own custom STT/TTS stack."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Over 750 Voices & SSML Support"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Our expanded voice library now features over 750 voices, bringing you a massive selection of both standard and cutting-edge new AI voices across a multitude of languages and accents. All text-to-speech commands (SAY) support SSML, giving you fine-grained control over pronunciation, pacing, and emphasis."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"batch-calling-with-intelligent-call-pacing","__idx":4},"children":["Batch Calling with Intelligent Call Pacing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Initiating and managing bulk outbound campaigns (such as notifications, marketing outreach, or appointment reminders) is fully native in V2. A Batch represents a group of call sessions initiated together as a single, highly controlled operation, eliminating the need to build your own custom throttling queues."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Parameter Templating: Send a single SVAML command payload with placeholders (e.g., @name, @time) alongside an array of target parameters. The API automatically triggers and personalizes each session."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Built-in Traffic Pacing:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rate Limiting (maxCps): Control the maximum Calls Per Second (CPS) to comply with carrier regulatory limits."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Time-to-Live (ttlSeconds): Set a maximum time window for initiating the calls. Any call not triggered before the TTL expires is automatically skipped."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Full Lifecycle Management: Developers have native control over active operations. Fetch aggregated statistics, drill down into per-session details, or safely stop an active batch mid-run without disconnecting ongoing calls."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"cloudevents-webhooks--failover-reliability","__idx":5},"children":["CloudEvents Webhooks & Failover Reliability"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Our webhooks have been fully modernized for modern event-driven, serverless architectures:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["CloudEvents 1.0: Webhook events conform to the CloudEvents standard, making them directly compatible with platforms like AWS EventBridge and Apache Kafka with zero custom parsing."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Advanced Precedence Rules: V2 introduces granular event handling. You can now define event handlers at the command level (inside specific SVAML commands) to override global service-level handlers, giving you precise, per-call logic control."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Built-in Failover: If your primary webhook endpoint fails or times out (5-second limit), the blocking webhook command automatically re-routes the request to a configured fallback URL, ensuring high availability and call continuity."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"logs--analytics-in-the-customer-build-dashboard","__idx":6},"children":["Logs & Analytics in the Customer Build Dashboard"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We have completely rebuilt the dashboard experience alongside the API to make monitoring, troubleshooting, and optimization frictionless."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Logs Dashboard enables rapid troubleshooting. Developers can search for specific interactions instantly via Call or Session IDs and employ advanced filters to narrow down entries by date, Voice Services, geographical region, or voice channels (Phone, SIP, Stream, Voice Relay). Selecting any log entry opens a detailed view showing aggregated session metadata, an interactive call timeline illustrating exact state transitions (such as Queued, Initiated, In Progress, and Completed), and the raw request/response JSON payloads for validating SVAML execution."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Comprehensive Analytics Console. For macro-level insights, the new Analytics Console aggregates high-level performance metrics such as Answer Seizure Ratio (ASR), total call counts, and average call durations across all voice channels. The console offers observability into advanced features—allowing you to track active recording durations, transcription events, total TTS messages, and synthesized characters. It also features graphical distribution maps to visualize traffic geographically, alongside breakdowns of call results and explicit termination reasons (like Callee Hangup or Busy) for absolute traffic clarity."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"unified-authentication--webhook-security","__idx":7},"children":["Unified Authentication & Webhook Security"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["V2 introduces a new, project-based authentication system (supporting OAuth 2.0 and Basic Auth) designed to work seamlessly across multiple Sinch products. For inbound security, webhook endpoints can now easily verify that requests are genuinely from Sinch by computing a hash of the payload using your service's access key and secret, mitigating man-in-the-middle attacks."]}]},"headings":[{"value":"What’s new in Voice API v2?","id":"whats-new-in-voice-api-v2","depth":1},{"value":"Redesigned Call Model (Sessions, Calls, & Bridges)","id":"redesigned-call-model-sessions-calls--bridges","depth":2},{"value":"SVAML v2: Powerful Serverless & Dynamic Call Control","id":"svaml-v2-powerful-serverless--dynamic-call-control","depth":2},{"value":"Native AI Capabilities & Real-Time Streams","id":"native-ai-capabilities--real-time-streams","depth":2},{"value":"Batch Calling with Intelligent Call Pacing","id":"batch-calling-with-intelligent-call-pacing","depth":2},{"value":"CloudEvents Webhooks & Failover Reliability","id":"cloudevents-webhooks--failover-reliability","depth":2},{"value":"Logs & Analytics in the Customer Build Dashboard","id":"logs--analytics-in-the-customer-build-dashboard","depth":2},{"value":"Unified Authentication & Webhook Security","id":"unified-authentication--webhook-security","depth":2}],"frontmatter":{"seo":{"title":"What’s new in Voice API v2?","description":"Read about the reason to use voice v2 instead of Voice v1"}},"lastModified":"2026-08-31T14:41:27.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/voice-2.0/whatsnew","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}