SIP trunks: bring your own carrier
Connect your own SIP carrier to Bolna and run voice agents on the numbers you already have. Create a SIP trunk, give your carrier Bolna’s address and IPs, and add your numbers. Inbound calls to a number go to the agent you assign to it, or to the trunk’s default inbound agent, and an agent on thetrunk telephony provider places outbound calls through your carrier.- Carriers: Plivo, Telnyx, Twilio, Exotel, Vobiz, Vonage, or any standards-based SIP carrier. The dashboard’s carrier preset fills in what it can and shows a setup checklist
- Inbound: your carrier sends calls to
trunk.bolna.ai, and only the carrier IPs you add to the trunk are accepted - Outbound: calls leave through your carrier’s gateways, with digest credentials if your carrier issues them
- Echo tests: test calls in both directions play your voice back, so you can confirm audio before an agent is involved
- Channels: each trunk has a channel count shared by inbound calls, outbound calls and transfers, and queued outbound calls wait for a free channel
- On the call: keypad input (DTMF), call transfer through the same trunk, and the inbound
P-Asserted-IdentityandDiversionheaders available to the agent as variables - Over the API:
/trunk/trunkscreates and manages trunks with their gateways, carrier IPs and numbers, andPATCH /trunk/numbers/{number_id}assigns an agent to a number - MCP server: 19 new tools, from
create_trunkandget_trunk_connection_detailstostart_trunk_test_call
Static nodes can end the call
A static node in a graph agent can now hang up once its message has played, so a fixed goodbye no longer leaves the caller in silence until the timeout. Turn on End call after this message on a static node with no transitions.- Over the API: set
"function_call": "end_call"on a static node with no edges - Nodes with transitions keep routing: the setting only applies to a static node with nowhere else to go
- Interruptible goodbyes: with Allow interruption on for the final call message, a caller who talks over the goodbye keeps the call going
Sarvam Bulbul v4 Flash
Sarvam’s newest text-to-speech model,bulbul:v4-flash, is now available alongside bulbul:v3. Pick Bulbul v4 Flash under Sarvam on the agent’s Languages tab.- 222 voices: each built for one language and use case, such as
aparna_hi_customerorsimran_en_sales, including 13 Hindi-English code-mixed voices - 9 languages: English, Hindi, Bengali, Gujarati, Kannada, Marathi, Punjabi, Tamil and Telugu. Malayalam and Odia stay on
bulbul:v3 - Faster first audio than
bulbul:v3 - Over the API: set
modeltobulbul:v4-flashwith a v4 Flashvoice_id. v3 voice ids do not work on v4 Flash
Bring your own TTS
Voice agents can now speak through your own text-to-speech server, as long as it speaks the OpenAI speech API. Add a voice under Settings → Integrations → TTS → Custom TTS with your endpoint, model and key, then pick it on the agent’s Languages tab.- Any OpenAI-compatible server: self-hosted open-weight models, vLLM-Omni or a hosted gateway, called at
POST {base_url}/audio/speech - Your key, your bill: the key is stored encrypted, and Bolna does not charge for speech from a custom TTS
- Over the API:
POST,GETandDELETE /user/tts/custom
Manage compliance applications over the API
Compliance applications, which you need before buying Indian phone numbers, can now be managed with your API key, not just from the dashboard. Submit an application, track its review and delete it from your own systems.- Submit:
POST /compliance/createtakes your business details, CIN certificate and GST certificate (PDFs up to 10 MB) asmultipart/form-data - Track:
GET /compliance/listandGET /compliance/{compliance_id}return each application’sstatus(submitted,acceptedorrejected) and itsrejection_reason - Delete:
DELETE /compliance/{compliance_id}removes an application and its documents so you can resubmit with corrected details - Buy numbers: pass an accepted application’s
idascompliance_application_idtoPOST /phone-numbers/buy
Bolna is now a Claude connector
Bolna is listed in Claude’s connector directory, so you can manage your voice agents from a Claude chat without an API key or a config file. Open the Bolna connector, click Connect, and sign in with your Bolna account.- Where it works: Claude on the web, desktop and mobile
- What it can do: create, inspect, update and delete agents, read call executions and batches, and check your account
- What it can’t: place calls or manage phone numbers, knowledge bases, dispositions, SIP trunks, sub-accounts or workflows. For those, connect the full MCP server at
https://mcp.bolna.ai/api/mcp
Web search for voice agents
Agents can now look up current information on the web during a call, so callers get answers about news, prices, scores and anything else that changes after a model is trained. Add the new Web Search tool from the Tools tab, and the agent searches only when a question needs it.- Providers: choose OpenAI, Exa, Firecrawl or Parallel as the search provider
- API keys: OpenAI needs no key, since the agent uses its own OpenAI key if it runs on one, otherwise Bolna’s. Exa, Firecrawl and Parallel use your own key from that provider
- Settings: set a pre-tool message for the agent to say while it searches, and how many results it reads before answering
- Over the API: configure it with
web_searchin the agent’stools_config
Define what a graph agent extracts, and get the values after the call
Graph agent edges that extract values now take a definition for each value, and the values a call collected can be returned on the execution and webhook.- Per-value definitions: an extract parameter can carry a
descriptionthat the routing model sees on that key and, for text values,allowed_valuesthat the answer must come from, so expression edges can match one exact value - In the dashboard: each parameter in the edge inspector’s Extract parameters section has What to extract and Allowed values fields
- Values after the call:
node_extracted_dataon the execution and webhook holds the latest value per key the call collected - Reserved names (
reasoning,confidence,recipient_data,detected_language, and names starting with_) are now rejected when an agent is saved
AssemblyAI session settings and agent context
AssemblyAI agents can now tune how AssemblyAI ends the caller’s turn and handles noise, and AssemblyAI now hears what your agent just said before the caller answers it.- Agent context: on the Universal-3 models, Bolna gives AssemblyAI the agent’s last spoken reply as context for the caller’s next turn, which helps on short answers, spelled-out names and numbers. It is automatic, and after a barge-in it uses only the part of the reply the caller heard
- Session settings: a new
assemblyai_configon the transcriber setsmode,min_turn_silence,max_turn_silence,interruption_delay,vad_thresholdand voice focus. Each is optional and keeps AssemblyAI’s default when unset - In the dashboard: Mode, VAD threshold and Longest pause in a turn are under Advanced settings in the Transcription section of the Languages tab, next to the Deepgram Flux and OpenAI settings, which moved there too
- Long contexts in any script: a
contextof up to 1,750 characters now works in Hindi and other non-Latin scripts too; long non-Latin contexts used to fail to connect
Keyword biasing for Sarvam speech-to-text
Sarvam’ssaaras:v4 transcriber now reads your agent’s keywords, so the brand names, places and product terms your Indian-language callers say are recognised instead of the nearest common word. Until now Sarvam took only context; on saaras:v4 you can set both.- Add terms in the Keywords box in your agent’s Languages tab, or pass
keywordson the transcriber over the API - Up to 50 terms of up to 64 characters each, and a list over either limit is rejected when you save the agent
saaras:v3and older Sarvam models have no keyterm support, so the box stays disabled there; keywords already saved on the agent apply once you move it tosaaras:v4

