Configure the Voice Agent
To configure your Voice Agent, you’ll need to send a Settings message immediately after connection. This message configures the agent’s behavior, input/output audio formats, and various provider settings.
For more information on the Settings message, see the Voice Agent API Reference
Provider-specific guidance lives on the model pages, not here. For LLM model selection, fallback behavior, and managed-vs-BYO provider rules, see LLM Models. For TTS provider parameters and codeswitching voices, see TTS Models. For audio encoding choices, see Media Inputs & Outputs.
Settings Overview
The Settings message is a JSON object that contains the following fields:
Settings
Audio
Agent Settings
agent.context
- The
agent.contextobject allows you to provide conversation history to the agent when starting a new session. This is useful for continuing conversations or providing background context. - The
agent.context.messagesarray contains conversation history entries, which can be either conversational messages or function calls. - Conversational messages have the format:
{"type": "History", "role": "user" | "assistant", "content": "message text"} - Function call messages have the format:
{"type": "History", "function_calls": [{"id": "unique_id", "name": "function_name", "client_side": true/false, "arguments": "json_string", "response": "response_text"}]} - Use this feature to maintain conversation continuity across sessions or to provide the agent with relevant background information.
- To disable function call history, set
settings.flags.historytofalsein theSettingsmessage.
Agent - Listen Settings (STT)
agent.listen.provider.model
- To use Flux use
flux-general-en, orflux-general-multifor multilingual support. - When using
flux-general-multi, setagent.listen.provider.language_hintsto an array of BCP-47 language codes to bias toward expected languages. See Flux Multilingual & Language Prompting. - Refer to the language availability for Flux to understand the language options.
agent.listen.provider.language
-
Choose your language parameters based on your use case:
- If you know your input language, specify it directly in
agent.listen.provider.languagefor the best recognition accuracy. - If you expect multiple languages or are unsure, use
multiinagent.listen.provider.languagefor flexible language support (Nova models), or useflux-general-multiwithlanguage_hintsfor Flux-based multilingual support.
- If you know your input language, specify it directly in
-
Refer to our supported languages to ensure you’re using the correct model (Flux, Nova-3, or Nova-2) for your selected language.
-
For detailed multilingual setup, see Multilingual Voice Agents.
agent.listen.provider.eot_threshold, agent.listen.provider.eager_eot_threshold, and agent.listen.provider.eot_timeout_ms
These parameters control Flux end-of-turn detection and are only available when using Flux models with the v2 API (agent.listen.provider.version set to v2).
eot_thresholdsets the confidence required to trigger anEndOfTurnevent. Higher values reduce false positives but increase latency. Defaults to0.7.eager_eot_thresholdenables eager end-of-turn detection, triggeringEagerEndOfTurnevents before the user fully finishes speaking. This reduces end-to-end latency but increases LLM calls. Must be less than or equal toeot_threshold.eot_timeout_mssets a hard timeout in milliseconds — a turn finishes when this much time has passed after speech, regardless of EOT confidence. Defaults to5000.- All three parameters can be updated during a conversation using the
UpdateListenmessage. - For detailed tuning guidance, see the Flux end-of-turn configuration.
agent.listen.provider.smart_format
- The
agent.listen.provider.smart_formatsetting is only available for Deepgram providers. - When set to
true, Deepgram applies smart formatting to improve transcript readability. - Useful for UI-based apps that display Agent transcripts on screen, as it formats the text for better readability.
- When set to
false, Deepgram does not apply smart formatting. - The default value is
false. - When using Flux, you cannot use
smart_format.
Agent - Think Settings (LLM)
agent.think.provider.reasoning_mode
- The
reasoning_modeparameter maps to OpenAI’sreasoning_effortparameter. - Accepts
low,medium, orhigh. Higher values allow the model to spend more tokens reasoning before responding, which can improve accuracy on complex tasks. - Only supported with OpenAI reasoning models (e.g.,
gpt-5,gpt-5-mini).
agent.think.context_length
- Using
maxwill set the context length to the maximum allowed based on the LLM provider you use. If the total context exceeds the model’s maximum, truncation is handled by the LLM provider. - Increasing the context length may help preserve multi-turn conversation history, especially when verbose function calls inflate the total context.
- All characters sent to the LLM count toward the context limit, including fully serialized JSON messages, function call arguments, and responses. System messages are excluded and managed separately via
agent.think.prompt. - The default context length set by Deepgram is optimized for cost and latency. It is not recommended to change this setting unless there’s a clear need.
Agent - Speak Settings (TTS)
agent.speak.provider.version
- Applies to Deepgram TTS providers only. Selects the Deepgram text-to-speech model family.
- Set
v2to use Flux TTS with aflux-{voice}-{language}model such asflux-alexis-en. - Set
v1(the default when omitted) to use Aura models such asaura-2-thalia-en. - Flux TTS voices are served only on
v2and Aura voices only onv1, so changeversionandmodeltogether.
Early Access. Flux TTS is in Early Access — the Flux TTS-specific API surface in the Voice Agent and voice catalog may change before general availability. See TTS Models for the Voice Agent parameters.
agent.speak.provider.language
- Currently,
multiis only supported inagent.speak.provider.languagewith Eleven Labs TTS, OpenAI TTS, or Cartesia TTS. - Refer to our supported languages to ensure you’re using the correct model (Flux, Nova-3, or Nova-2) for your selected language.
- For detailed multilingual setup, see Multilingual Voice Agents.
TTS Controls - Speed, Pronounciation, Pause / Pacing
- Use
agent.speak.provider.speedto control speed for each session - Leverage the prompt (
agent.think.prompt) for pronunciation, pause, and pacing controls. For detailed recommendations, see Voice Agent TTS Controls.
Full Example
Below is an in-depth example showing all the available fields for Settings with all the optional fields for individual provider specific settings.
Next Steps
- Voice Agent Message Flow for the correct message flow when building a Voice Agent client.