📘 Create Agent API reference now covers every provider
The Create Agent API reference documented a fraction of what the API actually accepts — two transcribers and four synthesizers. It now lists the full set, with the exactprovider and model values each one takes:- 11 transcribers — Deepgram (including Flux), Sarvam, OpenAI, Azure, ElevenLabs, AssemblyAI, Gladia, Smallest, Soniox, Gemini and Google
- 12 synthesizers — ElevenLabs, Cartesia, Sarvam, Smallest, Deepgram, Polly, Azure, Rime, Maya, Kalpa, OpenAI and Gemini
- 18 accepted LLM provider values, including the LiteLLM-routed ones that have no reference page
- Sarvam transcription takes a plain language code — send
"language": "hi", not"hi-IN", which is rejected cartesia,sarvam,smallest,rime,openaiandpollyrequire alanguagekey insideprovider_config- Two provider values don’t match their product names: the AssemblyAI transcriber is
assembly, and the Azure synthesizer isazuretts keywordsis read by Deepgram and ElevenLabs only, and aword:boostsuffix is stripped before storage — send plain termsPOST /v2/agentreturns aversion_idalongsideagent_idandstate
Extraction categories API
Extraction categories are now first-class API objects. A category is the set of dispositions evaluated together in a single LLM pass — one category means one LLM call per conversation — and the category owns the model used for that pass.New endpoints:POST /agent/{agent_id}/extraction-categories— create a category (name + model) and attach it to an agentGET /agent/{agent_id}/extraction-categories— list an agent’s categories with their dispositionsPATCH /extraction-categories/{category_id}— rename a category or change its model; renames propagate to all its dispositionsDELETE /extraction-categories/{category_id}— delete a category and all of its dispositions
category_id (preferred) alongside the existing category name — a name that does not match one of the agent’s categories creates a fresh category — and every disposition response includes category_id. Move a disposition between categories by updating it with a new category_id; a category emptied by a move or delete is removed automatically.Call summary toggle
- Call summaries are an agent-level toggle:
call_summary_enabled(boolean, off by default) on the agent create and update APIs and in agent responses. When on, a platform summary pass runs after each call and writes the summary to the execution’ssummaryfield and toextracted_dataunderGeneral > Call Summarywith only asubjectivevalue; agents with the toggle off produce no call summary.
Kalpa Labs joins Bolna as a new voice synthesizer
Kalpa Labs is now available as a text-to-speech provider. Itskalpa-tts-multilingual-beta-v0.1 model speaks English, Hindi, and code-switched Hinglish from a single model, with no language parameter to set. An English-only kalpa-tts-beta-v0.1 model is also available.- Runs over a persistent WebSocket, so model output is spoken as it streams in rather than in fixed chunks
- Named voices from Kalpa’s catalog, addressed by name or voice id
- Supports both telephony (mu-law) and web (native 24 kHz) audio
📦 Migration guide: moving off legacy extraction fields
Custom Analytics (custom_extractions), Agent Extraction (agent_extraction), and flat extracted_data keys are being retired on 18th September, 2026 in favor of Extractions. A new guide walks through what changes in the payload, how to rebuild each legacy feature, and how to verify a migration against real transcripts before switching off the old read path.📘 Migrating to Extractions🛒 Bolna is now on AWS Marketplace
You can now buy Bolna directly through AWS Marketplace, with Pilot and Enterprise contract tiers available as monthly or annual terms. Procuring this way lets you draw down your existing AWS committed spend and consolidate billing onto your AWS invoice.An “AWS Marketplace” tile is also now available on the Providers page in your dashboard, linking straight to the listing.📘 Buy Bolna on AWS Marketplace🌐 More accurate language switching for multilingual agents
If your voice agent speaks more than one language, it’s now much better at telling when a caller has actually switched languages, instead of reacting to a single stray word.Before: one borrowed word — like an English word inside a Hindi sentence — could make the agent switch languages by mistake.Now:- The agent only switches when the caller speaks a full sentence in another language, or clearly asks for one by name.
- Everyday things like “okay,” a phone number, or an OTP no longer count as a language change, even mid-sentence.
- If the agent misreads a word, it recovers on the caller’s next turn instead of staying stuck in the wrong language.

