Skip to main content

Speech-to-speech agents

You can now run an agent on a single realtime speech-to-speech model, instead of separate speech-to-text, LLM and text-to-speech steps. It replies faster and sounds more natural, because it works with audio directly rather than converting to text and back.Turn it on with the Realtime voice engine in the agent editor, then pick a provider:
  • OpenAI Realtime
  • Gemini Live
Your prompt, greeting, tools, recording and transcripts all carry over. Knowledge base, graph and multilingual agents stay on the standard setup.Speech-to-speech agents · OpenAI Realtime · Gemini Live

Gemini 3.5 Transcribe now available for voice agents

Google’s gemini-3.5-transcribe-live speech-to-text model is now available as a transcriber. It delivers high transcription accuracy with low latency across a wide range of languages, and works on both telephony (8 kHz) and web (16 kHz) calls.Select a language from the supported set in the Audio tab, and connect your own Google API key from provider settings.Gemini transcriber docs

🔡 Nested JSON in prompt variables — and prompts containing JSON no longer break

Prompt variables can now carry whole JSON objects and arrays, not just flat strings. Reach into them with a double-brace token and a dotted path:
agent prompt
A token like {{score_trend}} on its own renders the entire object as JSON, array elements are reachable by index, and a value that arrives as a stringified JSON blob is parsed for you. The first segment of a path must be a top-level key of the data you passed — paths mirror your JSON exactly, starting at the root.This works everywhere variables already did: user_data on /call, userData in the Web Call SDK, the JSON returned by incoming caller identification, and graph agent nodes.Prompts that contain JSON are now safe. Previously, a single JSON example pasted into a prompt could stop every variable in that prompt from being substituted, leaving the agent to read placeholders like {full_name} out loud. Braces that don’t look like a variable path are now left untouched, so a JSON snippet and your variables can live in the same prompt.Existing single-brace {variable} prompts keep working unchanged. An unresolved {{variable}} stays visible in the prompt as {variable}, which makes a mismatched path easy to spot in the transcript.📘 Adding variables

Bring your own LLM endpoint

You can now connect a self-hosted or third-party OpenAI-compatible model and run agents on it. Add it from Integrations under the LLM filter: give the model id your endpoint serves, its base URL, an API key and the model family. Bolna verifies the endpoint before saving, so a wrong key or a model your endpoint does not serve is caught at that point rather than on a live call.Your key is stored encrypted and sent to your endpoint as a bearer token, so an endpoint that requires authentication now works. Each model appears as its own card on Integrations and can be deleted from there, and a model still selected on an agent cannot be deleted until those agents are pointed elsewhere.Models added inside a sub-account stay in that sub-account, while models added on the account are available everywhere in it.Using custom LLMs

🌐 Webhooks and tool calls will start arriving from two additional IPs on 29th August

From 29th August 2026, 12:00 AM IST (28th August, 18:30 UTC), Bolna traffic egresses through NAT gateways in three availability zones instead of one. Outbound webhooks and HTTP tool calls will therefore reach your server from any of three source IPs:
  • 13.203.39.153 — existing
  • 13.126.9.249 — new
  • 13.202.133.53 — new
13.203.39.153 stays valid, so this is an addition rather than a replacement. If your firewall only allows that single address, whitelist all three before the cutover — requests from the new IPs will otherwise be dropped, taking webhook events and tool call responses with them.📘 Webhook IP whitelist · Custom function calls · Security

Transfer a call to your own SIP trunk

A Transfer Call tool on an agent using Plivo telephony can now hand the call to a SIP URI instead of a phone number, so escalations land on your own trunk rather than going back out over the PSTN.Each transfer tool can also carry custom SIP headers, delivered on the outgoing INVITE with the names exactly as you write them, which is what lets your trunk route or annotate the call. Header values take the same %(field)s placeholders used elsewhere, so they can carry per-call data such as an order or account id.
In the dashboard, the Transfer Call modal offers a Transfer destination choice between a phone number and a SIP trunk URI, with a list for the headers and a picker for your agent’s variables.Transfer to a SIP trunk

🔀 Workflows: build multi-step outreach sequences — now from chat too (beta)

Workflows let you script what happens around a call, not just during it — retry in an hour if nobody answers, fall back to WhatsApp, branch on sentiment — as one versioned sequence you build once and publish. Now live through the API, and through the Bolna MCP server too.From chat, you can now say things like:
  • “Create a workflow that retries this agent’s calls in an hour, then follows up over WhatsApp” — author and publish it without touching the dashboard
  • “Run this workflow against +91XXXXXXXXXX”, or “start a campaign from this CSV of leads” — test one contact or launch a whole batch
  • “Pause the campaign for workflow X” / “What node is this contact stuck on?” — control a run in progress and see exactly where it is
27 new tools, same confirm-before-it-acts behavior as every other write in the server.📘 MCP Overview · Tool List · Get started with Workflows

Cartesia Sonic 3.6 is available for voice agents

Cartesia’s newest Sonic model can now be selected as a synthesizer, as sonic-preview in the API and Sonic 3.6 (Beta) in the dashboard. It supports 42 languages and works with every Cartesia voice available in Bolna.Sonic 3.5 remains the recommended choice for production agents while 3.6 is in beta.Cartesia voice synthesis

Gemini 3.7 Flash is available for voice agents

Google’s newest Gemini flash model can now power your voice agents. Pick Gemini 3.7 Flash from the model dropdown in your agent’s LLM tab, or pass gemini-3.7-flash as the model over the API. It brings the strongest reasoning of the Gemini flash line, a 1M token context window and native multilingual handling.One setting to get right before you switch an agent over: set max_tokens to 400 or higher. Gemini 3.7 Flash always thinks before it speaks, and at the usual voice setting of 150 that thinking can use up the whole budget, leaving a cut-off reply or none at all. gemini-2.5-flash stays the recommended default when latency matters most.Configure Google Gemini

Eleven v3 is available for voice agents

ElevenLabs’ most expressive model, eleven_v3_conversational, can now be selected as a synthesizer. It supports 74 languages, including Hindi, Tamil, Bengali, Marathi, Gujarati, Kannada, Malayalam, Telugu and Punjabi, and every ElevenLabs voice available in Bolna works with it.One thing to know before switching an agent over: speed, style and similarity_boost have no effect on v3, and temperature maps to three stability presets (0.0 creative, 0.5 natural, 1.0 robust).Turbo remains the default and the lower-latency option.ElevenLabs voice synthesis

Sarvam saaras:v4 Transcriber Support

Bolna now supports Sarvam’s saaras:v4 transcriber model — the latest Saaras speech-to-text model, transcribing directly in the original spoken language with automatic language detection support. Supports all 11 Indian languages.Learn more in the Sarvam STT documentation.

🔌 Bolna joins viaSocket’s app directory

If you build automations in viaSocket, Bolna is now a first-class app you can drop into any flow — connect your API key once, no custom code needed.Six actions are live today:
  • Make a Phone Call — kick off an outbound call from any workflow
  • Get All Executions — pull call history and details into your flow
  • List Voice AI Agents — see every agent on your account
  • List Phone Numbers — see every number on your account
  • List Knowledgebases — see every knowledge base on your account
  • List Providers — see every provider connected to your account
📘 viaSocket integration overview · Create a Bolna API connection with viaSocket

🛠️ The MCP server now controls nearly your whole account

When the Bolna MCP server launched, it covered the basics — agents, calls, transcripts, account info. It’s grown into something closer to a full remote control. From the same chat window, you can now say things like:
  • “Buy me a US number and route it to my support agent” — search, purchase, and set up inbound call routing
  • “Create a batch campaign from this CSV and schedule it for 9am” — batches can now be created, scheduled, stopped, or deleted, not just listed
  • “Add a disposition that pulls appointment_time out of every call” — structured, typed data out of every transcript
  • “Set up a SIP trunk for my Twilio account and attach these numbers” — bring your own telephony
  • “Cancel every queued call for this agent” — stop one call or a whole agent’s queue
  • “What did my Acme Corp sub-account spend this month?” — check and manage sub-accounts, and switch between them mid-conversation with a key you already have on hand
Anything that deletes something, spends money, or places a real call still pauses for your confirmation first, same as before.📘 MCP Overview · Tool List · Prompt Cheatsheet

🎙️ Maya joins Bolna as a new voice synthesizer

Maya Research’s Maya 2 Native model is now available as a text-to-speech provider, with two voices — Ananya and Arjun — each covering all 11 supported languages, including Indian English.
  • Runs over a persistent WebSocket, so LLM output is spoken as it streams in rather than in fixed chunks
  • Language can switch mid-call without dropping the connection
  • Supports both telephony (mu-law) and web (native 24 kHz) audio
📘 Maya voice provider docs