Skip to main content
When you build an agent through the dashboard, Bolna generates the multilingual configuration for you. If you create or update agents over the API instead, you provide that configuration directly through the multilingual_config object. This page documents the object: where it lives, every field, its validation rules, and how Bolna expands it for the call.

Where it lives

multilingual_config sits inside tools_config on the first task of the agent payload you send to POST /v2/agent:
The top-level transcriber and synthesizer act as the base. Each language in multilingual_config.languages starts from that base and applies its own overrides on top. The agent opens the call in active_language.

Top-level fields

Two validation rules are enforced on agent create and update:
  1. languages must contain at least 2 entries.
  2. active_language must be one of the keys in languages.
Failing either returns Invalid multilingual config and the agent is not saved.

Per-language entry

Each value in languages is keyed by an ISO 639-1 code and has this shape:

How overrides layer onto the base

  • Transcriber: the per-language transcriber is merged onto the base transcriber, then the language field is resolved to the provider’s expected format (for example Sarvam hi becomes hi-IN). If you omit transcriber, the base transcriber is reused with the language code set to the entry’s key.
  • Synthesizer: if the per-language provider matches the base, only the differing keys (including a shallow merge of provider_config) are applied. If the provider differs, the per-language synthesizer replaces the base entirely. For sarvam, smallest, cartesia, openai, pixa, and polly, the language is resolved into provider_config.language automatically.
This lets each language use a different STT and TTS provider. A common setup uses Deepgram for English transcription and Sarvam for Hindi, with ElevenLabs voice for English and Sarvam voice for Hindi.

Language switching

Once multilingual_config is enabled, Bolna injects a switch_language tool so the LLM can change language mid-call, and runs language detection in parallel so the agent can follow the caller automatically.
  • Prompt-driven: describe when to switch in your prompt (for example “switch to Hindi if the user speaks Hindi”). The LLM calls switch_language and the transcriber, synthesizer, and active system prompt all switch together.
  • Auto-detection: after a few conversation turns Bolna identifies the dominant language and switches system messages to match. See Auto-Switch Languages.
  • switch_tool_description: customize how the switch tool is described to the LLM when you need tighter control over switching behavior.

Full example

A two-language agent (English primary, Hindi secondary) with a different STT and TTS provider per language:

Supported languages

Provider support varies by language. Pick an STT and TTS provider per language that covers it. For Indian languages, Sarvam covers the widest set.

Next Steps

Multilingual Support

Set up the same agent from the dashboard

Auto-Switch Languages

Auto-detect and switch system messages by language

Non-English Prompts

Write per-language prompts in native scripts

Create Agent API

Full agent creation API reference