{
"message": "This is the live version. Save the agent with PUT /v2/agent/{id} instead."
}
Saves a configuration into a version that isn’t live. The body is the same as Update agent: send the full configuration, for example the one from Get agent version with your changes.The save keeps the version’s name and tags but gets a new version_id, returned in the response. Use that id from now on, for later saves, test calls and set_current. List agent versions shows the version with its new id.
The live version returns 409. Save it with Update agent instead.
Authorizations
Authorization
string
header
required
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
{
"message": "This is the live version. Save the agent with PUT /v2/agent/{id} instead."
}
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Bolna Docs","description":"Quickly build and deploy conversational Voice AI agents","colors":{"primary":"#2563EB","light":"#BAE6FD","dark":"#2563EB"},"logo":{"light":"https://mintcdn.com/bolna-54a2d4fe/n6ISBDZpjo2_6G0U/logo/bolna-logo.png?fit=max\u0026auto=format\u0026n=n6ISBDZpjo2_6G0U\u0026q=85\u0026s=1df42427a7bac4c04ba42e35c42aaff5","dark":"https://mintcdn.com/bolna-54a2d4fe/PGaphb2L1IE-6aKF/logo/Bolna-white.png?fit=max\u0026auto=format\u0026n=PGaphb2L1IE-6aKF\u0026q=85\u0026s=8a0baa4c200add0fe463dfde6bcb10d6","href":"https://www.bolna.ai/docs"},"favicon":"https://mintcdn.com/bolna-54a2d4fe/mJ1zPF3eB4Dyupzj/favicon1.ico?fit=max\u0026auto=format\u0026n=mJ1zPF3eB4Dyupzj\u0026q=85\u0026s=2c2d3c96d1d4add97ebe430ade591aa3","api":{"openapi":"api-reference/openapi.yml"},"background":{"decoration":"grid"},"navbar":{"links":[{"icon":"globe","href":"https://status.bolna.ai","label":"Status"},{"icon":"slack","href":"https://www.bolna.ai/join-slack","label":"Ask us on Slack"},{"icon":"gauge","href":"https://platform.bolna.ai/sign-up","label":"Platform"}]},"footer":{"socials":{"website":"https://platform.bolna.ai","github":"https://github.com/bolna-ai/bolna","slack":"https://www.bolna.ai/join-slack"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Bolna AI Documentation","canonical":"https://www.bolna.ai/docs"},"organization":{"id":"https://www.bolna.ai/#organization","name":"Bolna AI","legalName":"Whismurwave Inc.","url":"https://www.bolna.ai","logo":"https://www.bolna.ai/logos/logo-black.png","sameAs":["https://www.linkedin.com/company/bolna-ai/","https://www.ycombinator.com/companies/bolna-ai","https://github.com/bolna-ai","https://x.com/bolna_dev","https://www.youtube.com/@BolnaVoiceAI"]}},"styling":{"codeblocks":"system","latex":false},"integrations":{"ga4":{"measurementId":"G-BJ5QXHE52P"},"gtm":{"tagId":"GTM-53BBWG2J"}},"contextual":{"options":["copy","view","chatgpt","claude","add-mcp","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bolna-54a2d4fe","hasAudioNarration":false,"actualSubdomain":"bolna-54a2d4fe","customDomains":["www.bolna.ai"],"gitSource":{"type":"github","owner":"bolna-ai","repo":"docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af822dd8deffcac16fbef83","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Voice Agents","count":157},{"language":"default","tag":"API Reference","count":143},{"language":"default","tag":"Build","count":77},{"language":"default","tag":"Integrations","count":60},{"language":"default","tag":"Deploy","count":59},{"language":"default","tag":"Workflows","count":57},{"language":"default","tag":"Voice agents","count":48},{"language":"default","tag":"AI models","count":42},{"language":"default","tag":"Developers","count":41},{"language":"default","tag":"Telephony","count":36}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@bolna.ai"}},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"#banner{background-color:#60A5FA!important}img[src*=\"bolna-logo\"],img[src*=\"Bolna-white\"]{height:52px!important;width:auto!important;max-height:unset!important;max-width:unset!important}.update-container{flex-direction:column!important;align-items:stretch!important}.update-container>div:first-child{position:static!important;width:auto!important;margin-bottom:0.5rem}#content-container,#content-container :is(p,li,td,th,dd,dt,span,div){hyphens:none!important;-webkit-hyphens:none!important}#content-container code:not(pre code){word-break:normal!important;overflow-wrap:break-word!important}"}],"page":{"pagePath":"api-reference/agent/v2/versions/update","slug":"/api-reference/agent/v2/versions/update","pageMetadata":{"title":"Update agent version API","sidebarTitle":"Update version","description":"Save edits into a Bolna voice agent version that isn't live, without changing the live agent.","openapi":"PUT /v2/agent/{agent_id}/versions/{agent_version_id}","last_reviewed":"2026-11-05","href":"/api-reference/agent/v2/versions/update"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Save edits into a Bolna voice agent version that isn’t live, without changing the live agent.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Saves a configuration into a version that isn’t live. The body is the same as `,_jsx(_components.a,{href:`/api-reference/agent/v2/update`,children:`Update agent`}),`: send the full configuration, for example the one from `,_jsx(_components.a,{href:`/api-reference/agent/v2/versions/get`,children:`Get agent version`}),` with your changes.`]}),`\n`,_jsxs(_components.p,{children:[`The save keeps the version’s name and tags but gets a `,_jsxs(_components.strong,{children:[`new `,_jsx(_components.code,{children:`version_id`})]}),`, returned in the response. Use that `,_jsx(_components.code,{children:`id`}),` from now on, for later saves, test calls and `,_jsx(_components.code,{children:`set_current`}),`. `,_jsx(_components.a,{href:`/api-reference/agent/v2/versions/list`,children:`List agent versions`}),` shows the version with its new `,_jsx(_components.code,{children:`id`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The live version returns `,_jsx(_components.code,{children:`409`}),`. Save it with `,_jsx(_components.a,{href:`/api-reference/agent/v2/update`,children:`Update agent`}),` instead.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Update agent version API","sidebarTitle":"Update version","description":"Save edits into a Bolna voice agent version that isn't live, without changing the live agent.","openapi":"PUT /v2/agent/{agent_id}/versions/{agent_version_id}","last_reviewed":"2026-11-05","href":"/api-reference/agent/v2/versions/update"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/bolna-54a2d4fe/9e81444dbfd8a835/custom.js","/docs/_mintlify/custom/bolna-54a2d4fe/786be19ebac8ab86/faq-schema.js"],"openApiReferenceData":{"operation":{"description":"Save edits into a Bolna voice agent version that isn't live, without changing the live agent.","parameters":["6e27dff5-90af-4fd9-8eb7-ff74c16f4c01","15f6f4f7-4b9e-41b2-9d57-d57f14956aa0"],"requestBody":"5f98606c-0ba3-49ba-8b67-e75766d68d7f","responses":{"200":"ae0324fc-d547-46c4-8b43-1b3bd9751e8b","400":"242b3d69-162e-46d4-b79a-83f125b767f2","404":"b4cccee2-28d9-451b-9286-ce9fd5e3a32d","409":"a1aa8fe4-a64a-4d9e-a160-3ee3ff145946"},"method":"put","type":"path","servers":["7e49bbbc-65ef-4cd4-bcd9-d0268ba2ca2d"],"security":["d17aec40-840d-45b8-bec6-4ae248cc8988"],"path":"/v2/agent/{agent_id}/versions/{agent_version_id}","baseUrlOptions":["https://api.bolna.ai"],"title":"","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6e27dff5-90af-4fd9-8eb7-ff74c16f4c01":{"in":"path","name":"agent_id","required":true,"description":"The agent's `id`","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The agent's `id`","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"15f6f4f7-4b9e-41b2-9d57-d57f14956aa0":{"in":"path","name":"agent_version_id","required":true,"description":"The version's `id`, from [List agent versions](/api-reference/agent/v2/versions/list)","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The version's `id`, from [List agent versions](/api-reference/agent/v2/versions/list)","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"description":"The full agent configuration, as in `PUT /v2/agent/{agent_id}`","content":{"application/json":{"schema":{"properties":{"agent_config":{"required":["agent_name","tasks"],"type":"object","properties":{"agent_name":{"description":"The name of the agent","type":"string","example":"Alfred","isRequired":true,"uniqueKey":"agent_config.agent_name","typeLabel":"string"},"tasks":{"items":{"properties":{"task_type":{"type":"string","description":"Type of task","enum":["conversation","extraction","summarization"],"uniqueKey":"agent_config.tasks.items.[INDEX].task_type","typeLabel":"enum\u003cstring>"},"tools_config":{"properties":{"llm_agent":{"properties":{"agent_type":{"type":"string","description":"Conversation engine for this task. Any other value is rejected at creation time. `simple_llm_agent` is the default: one LLM answers from the system prompt. `knowledgebase_agent` is the same as a simple agent, plus retrieval over uploaded [knowledge bases](/knowledge-base). `graph_agent` is a node-based flow; see [Graph agents](/graph-agent/introduction). `realtime_agent` replaces the transcriber, LLM, and synthesizer with a realtime [speech-to-speech](/speech-to-speech) model. See [Agent type](/api-reference/agent/v2/create#agent-type).","enum":["simple_llm_agent","knowledgebase_agent","graph_agent","realtime_agent"],"default":"simple_llm_agent","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.agent_type","typeLabel":"enum\u003cstring>"},"agent_flow_type":{"type":"string","enum":["streaming"],"default":"streaming","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.agent_flow_type","typeLabel":"enum\u003cstring>"},"routes":{"properties":{"embedding_model":{"type":"string","title":"Embedding Model","default":"snowflake/snowflake-arctic-embed-m","example":"snowflake/snowflake-arctic-embed-m","description":"Since we use fastembed all models supported by fastembed are supported by us","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.embedding_model","typeLabel":"string"},"routes":{"items":{"properties":{"route_name":{"type":"string","title":"Route Name","example":"politics","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].route_name","typeLabel":"string"},"utterances":{"items":{"type":"string","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].utterances.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Utterances","example":["Who do you think will win the elections?","Whom would you vote for?"],"description":"This is an array of utterances which when spoken you want to send a static response","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].utterances","typeLabel":"string[]"},"response":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].response.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Response","description":"It can be a stand alone string or array of responses. If it's an array the length should be same as number of utterances and a particular index will be matched before returning","example":"Hey, thanks but I do not have opinions on politics","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].response.oneOf.0","typeLabel":"string[]"},{"type":"string","title":"Response","description":"It can be a stand alone string or array of responses. If it's an array the length should be same as number of utterances and a particular index will be matched before returning","example":"Hey, thanks but I do not have opinions on politics","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].response.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].response","typeLabel":"string[] | string"},"score_threshold":{"description":"Similarity score threshold","type":"number","title":"Score Threshold","default":0.85,"example":0.9,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX].score_threshold","typeLabel":"number"}},"type":"object","required":["route_name","utterances","response"],"title":"Route","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes.items.[INDEX]","typeLabel":"Route · object"},"type":"array","title":"route","description":"These are predefined routes that can be used to answer FAQs, or set basic guardrails, or do a static function call.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes.routes","typeLabel":"Route · object[]"}},"type":"object","title":"Routes","description":"Semantic routing layer","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.routes","typeLabel":"Routes · object"},"llm_config":{"oneOf":[{"type":"object","title":"SimpleLlmAgent","description":"LLM configuration","properties":{"agent_flow_type":{"type":"string","enum":["streaming"],"default":"streaming","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.agent_flow_type","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","default":"openai","example":"openai","description":"LLM provider. Anything beyond `openai`, `azure-openai`, `anthropic`, `google`, `deepseek`, `sarvam`, `bedrock`, `openrouter` and `custom` routes through LiteLLM. Not validated at creation, so a wrong value fails only when a call runs. See [Supported providers](/api-reference/agent/v2/create#llm).","enum":["openai","azure-openai","azure","anthropic","google","deepseek","sarvam","bedrock","openrouter","custom","groq","cohere","together","fireworks","deepinfra","perplexity","anyscale","ollama","vllm","ola"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.provider","typeLabel":"enum\u003cstring>"},"family":{"type":"string","default":"openai","example":"openai","description":"Prompt format the model expects. Leave as `openai` for every hosted provider. Set it to the underlying family such as `llama` or `qwen` only when `provider` is `custom`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.family","typeLabel":"string"},"model":{"type":"string","default":"gpt-5.4-mini","example":"gpt-5.4-mini","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.model","typeLabel":"string"},"summarization_details":{"oneOf":[{"type":"string","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.summarization_details.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.summarization_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.summarization_details","typeLabel":"string | null"},"extraction_details":{"oneOf":[{"type":"string","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.extraction_details.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.extraction_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.extraction_details","typeLabel":"string | null"},"max_tokens":{"type":"integer","default":100,"example":150,"description":"Cap on the tokens generated per response. On GPT-5-series models this is sent as `max_completion_tokens`, and reasoning tokens are drawn from the same budget, so raise it above the default when running `reasoning_effort` higher than `none`/`minimal`.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.max_tokens","typeLabel":"integer"},"temperature":{"type":"number","format":"float","default":0.1,"example":1,"description":"Sampling temperature. **GPT-5-series models require exactly `1`.** Any other value is rejected with `400 For GPT-5 models, temperature must be 1`. The field defaults to `0.1`, so a GPT-5 agent must send `1` explicitly rather than omitting it.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.temperature","typeLabel":"number\u003cfloat>"},"reasoning_effort":{"oneOf":[{"type":"string","default":null,"example":"low","enum":["none","minimal","low","medium","high","xhigh"],"description":"How much the model reasons before answering. GPT-5-series models only. The accepted values differ per model and an unsupported value is rejected. See [OpenAI](/providers/llm-model/openai#reasoning-effort) for the per-model table. Omit it to get the lowest-latency effort the model supports, which is what voice agents usually want.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","default":null,"example":"low","enum":["none","minimal","low","medium","high","xhigh"],"description":"How much the model reasons before answering. GPT-5-series models only. The accepted values differ per model and an unsupported value is rejected. See [OpenAI](/providers/llm-model/openai#reasoning-effort) for the per-model table. Omit it to get the lowest-latency effort the model supports, which is what voice agents usually want.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.reasoning_effort","typeLabel":"enum\u003cstring> | null"},"verbosity":{"oneOf":[{"type":"string","default":null,"example":"low","enum":["low","medium","high"],"description":"How long the model's answers run. GPT-5-series models only. Defaults to `low`, which suits voice.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.verbosity.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","default":null,"example":"low","enum":["low","medium","high"],"description":"How long the model's answers run. GPT-5-series models only. Defaults to `low`, which suits voice.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.verbosity.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.verbosity","typeLabel":"enum\u003cstring> | null"},"use_responses_api":{"type":"boolean","default":false,"description":"Route the model through OpenAI's Responses API. Always on for `gpt-5.4`, `gpt-5.5` and `gpt-5.6` regardless of this field, since function calling with `reasoning_effort` is not accepted on chat completions for those models.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.use_responses_api","typeLabel":"boolean"},"compact_threshold":{"oneOf":[{"type":"integer","default":null,"description":"Token count at which the provider compacts conversation context. Applies only when the model runs through the Responses API.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.compact_threshold.oneOf.0","typeLabel":"integer"},{"type":"null","default":null,"description":"Token count at which the provider compacts conversation context. Applies only when the model runs through the Responses API.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.compact_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.compact_threshold","typeLabel":"integer | null"},"extra_body":{"oneOf":[{"type":"object","default":null,"additionalProperties":true,"example":{"chat_template_kwargs":{"enable_thinking":false}},"description":"Custom providers only (`provider: custom`). Extra fields added as top-level keys to every request sent to your endpoint, for parameters your server accepts beyond the OpenAI standard, e.g. `{\"chat_template_kwargs\": {\"enable_thinking\": false}}` to turn Qwen3 thinking off on vLLM. Rejected on any other provider, and when it sets `model`, `messages`, `stream`, `stream_options`, `tools`, `tool_choice`, `parallel_tool_calls` or `response_format`. See [Extra request params](/custom#extra-request-params).\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.extra_body.oneOf.0","typeLabel":"object"},{"type":"null","default":null,"additionalProperties":true,"example":{"chat_template_kwargs":{"enable_thinking":false}},"description":"Custom providers only (`provider: custom`). Extra fields added as top-level keys to every request sent to your endpoint, for parameters your server accepts beyond the OpenAI standard, e.g. `{\"chat_template_kwargs\": {\"enable_thinking\": false}}` to turn Qwen3 thinking off on vLLM. Rejected on any other provider, and when it sets `model`, `messages`, `stream`, `stream_options`, `tools`, `tool_choice`, `parallel_tool_calls` or `response_format`. See [Extra request params](/custom#extra-request-params).\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.extra_body.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.extra_body","typeLabel":"object | null"},"presence_penalty":{"type":"number","format":"float","default":0,"example":0,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.presence_penalty","typeLabel":"number\u003cfloat>"},"frequency_penalty":{"type":"number","format":"float","default":0,"example":0,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.frequency_penalty","typeLabel":"number\u003cfloat>"},"base_url":{"type":"string","default":"https://api.openai.com/v1","example":"https://api.openai.com/v1","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.base_url","typeLabel":"string"},"top_p":{"type":"number","format":"float","default":0.9,"example":0.9,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.top_p","typeLabel":"number\u003cfloat>"},"min_p":{"type":"number","format":"float","default":0.1,"example":0.1,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.min_p","typeLabel":"number\u003cfloat>"},"top_k":{"type":"number","format":"integer","default":0,"example":0,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.top_k","typeLabel":"number\u003cinteger>"},"request_json":{"type":"boolean","default":false,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0.request_json","typeLabel":"boolean"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.0","typeLabel":"SimpleLlmAgent · object"},{"type":"object","title":"KnowledgebaseAgent","description":"LLM configuration","properties":{"vector_store":{"properties":{"provider":{"type":"string","enum":["lancedb"],"default":"lancedb","description":"Provider vector store database","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.vector_store.provider","typeLabel":"enum\u003cstring>"},"provider_config":{"properties":{"vector_id":{"type":"string","format":"uuid","description":"Vector id of a single knowledge base (legacy, use `vector_ids` for multiple)","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.vector_store.provider_config.vector_id","typeLabel":"string\u003cuuid>"},"vector_ids":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.vector_store.provider_config.vector_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"Array of vector ids to use multiple knowledge bases simultaneously","example":["3c90c3cc-0d44-4b50-8822-8dd25736052a","4d91c4dd-1e55-5c61-9933-9ee36847163b"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.vector_store.provider_config.vector_ids","typeLabel":"string\u003cuuid>[]"}},"type":"object","title":"LanceDbConfig","description":"Configuration of the vector store database","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.vector_store.provider_config","typeLabel":"LanceDbConfig · object"}},"type":"object","title":"VectorStore","description":"Vector Store for knowledge base. Use [Knowledge Base APIs](/api-reference/knowledgebase/create) to upload PDFs or URLs. You can select multiple knowledge bases using `vector_ids`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.vector_store","typeLabel":"VectorStore · object"},"agent_flow_type":{"type":"string","enum":["streaming"],"default":"streaming","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.agent_flow_type","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","default":"openai","example":"openai","description":"LLM provider. Anything beyond `openai`, `azure-openai`, `anthropic`, `google`, `deepseek`, `sarvam`, `bedrock`, `openrouter` and `custom` routes through LiteLLM. Not validated at creation, so a wrong value fails only when a call runs. See [Supported providers](/api-reference/agent/v2/create#llm).","enum":["openai","azure-openai","azure","anthropic","google","deepseek","sarvam","bedrock","openrouter","custom","groq","cohere","together","fireworks","deepinfra","perplexity","anyscale","ollama","vllm","ola"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.provider","typeLabel":"enum\u003cstring>"},"family":{"type":"string","default":"openai","example":"openai","description":"Prompt format the model expects. Leave as `openai` for every hosted provider. Set it to the underlying family such as `llama` or `qwen` only when `provider` is `custom`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.family","typeLabel":"string"},"model":{"type":"string","default":"gpt-5.4-mini","example":"gpt-5.4-mini","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.model","typeLabel":"string"},"summarization_details":{"oneOf":[{"type":"string","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.summarization_details.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.summarization_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.summarization_details","typeLabel":"string | null"},"extraction_details":{"oneOf":[{"type":"string","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.extraction_details.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.extraction_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.extraction_details","typeLabel":"string | null"},"max_tokens":{"type":"integer","default":100,"example":150,"description":"Cap on the tokens generated per response. On GPT-5-series models this is sent as `max_completion_tokens`, and reasoning tokens are drawn from the same budget, so raise it above the default when running `reasoning_effort` higher than `none`/`minimal`.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.max_tokens","typeLabel":"integer"},"temperature":{"type":"number","format":"float","default":0.1,"example":1,"description":"Sampling temperature. **GPT-5-series models require exactly `1`.** Any other value is rejected with `400 For GPT-5 models, temperature must be 1`. The field defaults to `0.1`, so a GPT-5 agent must send `1` explicitly rather than omitting it.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.temperature","typeLabel":"number\u003cfloat>"},"reasoning_effort":{"oneOf":[{"type":"string","default":null,"example":"low","enum":["none","minimal","low","medium","high","xhigh"],"description":"How much the model reasons before answering. GPT-5-series models only. The accepted values differ per model and an unsupported value is rejected. See [OpenAI](/providers/llm-model/openai#reasoning-effort) for the per-model table. Omit it to get the lowest-latency effort the model supports, which is what voice agents usually want.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","default":null,"example":"low","enum":["none","minimal","low","medium","high","xhigh"],"description":"How much the model reasons before answering. GPT-5-series models only. The accepted values differ per model and an unsupported value is rejected. See [OpenAI](/providers/llm-model/openai#reasoning-effort) for the per-model table. Omit it to get the lowest-latency effort the model supports, which is what voice agents usually want.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.reasoning_effort","typeLabel":"enum\u003cstring> | null"},"verbosity":{"oneOf":[{"type":"string","default":null,"example":"low","enum":["low","medium","high"],"description":"How long the model's answers run. GPT-5-series models only. Defaults to `low`, which suits voice.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.verbosity.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","default":null,"example":"low","enum":["low","medium","high"],"description":"How long the model's answers run. GPT-5-series models only. Defaults to `low`, which suits voice.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.verbosity.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.verbosity","typeLabel":"enum\u003cstring> | null"},"use_responses_api":{"type":"boolean","default":false,"description":"Route the model through OpenAI's Responses API. Always on for `gpt-5.4`, `gpt-5.5` and `gpt-5.6` regardless of this field, since function calling with `reasoning_effort` is not accepted on chat completions for those models.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.use_responses_api","typeLabel":"boolean"},"compact_threshold":{"oneOf":[{"type":"integer","default":null,"description":"Token count at which the provider compacts conversation context. Applies only when the model runs through the Responses API.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.compact_threshold.oneOf.0","typeLabel":"integer"},{"type":"null","default":null,"description":"Token count at which the provider compacts conversation context. Applies only when the model runs through the Responses API.\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.compact_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.compact_threshold","typeLabel":"integer | null"},"extra_body":{"oneOf":[{"type":"object","default":null,"additionalProperties":true,"example":{"chat_template_kwargs":{"enable_thinking":false}},"description":"Custom providers only (`provider: custom`). Extra fields added as top-level keys to every request sent to your endpoint, for parameters your server accepts beyond the OpenAI standard, e.g. `{\"chat_template_kwargs\": {\"enable_thinking\": false}}` to turn Qwen3 thinking off on vLLM. Rejected on any other provider, and when it sets `model`, `messages`, `stream`, `stream_options`, `tools`, `tool_choice`, `parallel_tool_calls` or `response_format`. See [Extra request params](/custom#extra-request-params).\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.extra_body.oneOf.0","typeLabel":"object"},{"type":"null","default":null,"additionalProperties":true,"example":{"chat_template_kwargs":{"enable_thinking":false}},"description":"Custom providers only (`provider: custom`). Extra fields added as top-level keys to every request sent to your endpoint, for parameters your server accepts beyond the OpenAI standard, e.g. `{\"chat_template_kwargs\": {\"enable_thinking\": false}}` to turn Qwen3 thinking off on vLLM. Rejected on any other provider, and when it sets `model`, `messages`, `stream`, `stream_options`, `tools`, `tool_choice`, `parallel_tool_calls` or `response_format`. See [Extra request params](/custom#extra-request-params).\n","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.extra_body.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.extra_body","typeLabel":"object | null"},"presence_penalty":{"type":"number","format":"float","default":0,"example":0,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.presence_penalty","typeLabel":"number\u003cfloat>"},"frequency_penalty":{"type":"number","format":"float","default":0,"example":0,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.frequency_penalty","typeLabel":"number\u003cfloat>"},"base_url":{"type":"string","default":"https://api.openai.com/v1","example":"https://api.openai.com/v1","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.base_url","typeLabel":"string"},"top_p":{"type":"number","format":"float","default":0.9,"example":0.9,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.top_p","typeLabel":"number\u003cfloat>"},"min_p":{"type":"number","format":"float","default":0.1,"example":0.1,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.min_p","typeLabel":"number\u003cfloat>"},"top_k":{"type":"number","format":"integer","default":0,"example":0,"description":"Accepted for backwards compatibility. Not sent to OpenAI or Azure models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.top_k","typeLabel":"number\u003cinteger>"},"request_json":{"type":"boolean","default":false,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1.request_json","typeLabel":"boolean"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config.oneOf.1","typeLabel":"KnowledgebaseAgent · object"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent.llm_config","typeLabel":"SimpleLlmAgent · object | KnowledgebaseAgent · object"}},"type":"object","description":"Configuration of LLM model for the agent task","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.llm_agent","typeLabel":"object"},"synthesizer":{"properties":{"provider":{"type":"string","description":"Text-to-speech provider. Any other value is rejected with `400 Invalid value for provider:'\u003cvalue>' provided`. Each provider takes its own `provider_config` shape. See [Supported providers](/api-reference/agent/v2/create#synthesizer).","enum":["elevenlabs","cartesia","sarvam","smallest","deepgram","polly","azuretts","rime","openai","gemini","maya","kalpa","soniox","navana"],"example":"elevenlabs","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider","typeLabel":"enum\u003cstring>"},"provider_config":{"oneOf":[{"type":"object","title":"ElevenLabs","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model"],"properties":{"voice":{"type":"string","description":"Display name of the voice, exactly as the voice catalogue returns it","example":"Angelica","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.voice","typeLabel":"string"},"voice_id":{"type":"string","description":"ElevenLabs voice id, from [List voices](/api-reference/voice/get_all)","example":"IkSv4tkouLJ6kYsQA7XD","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["eleven_turbo_v2_5","eleven_flash_v2_5","eleven_multilingual_v2","eleven_v3_conversational","eleven_v4_turbo"],"example":"eleven_turbo_v2_5","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.model","typeLabel":"enum\u003cstring>"},"temperature":{"type":"number","format":"float","default":0.5,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.temperature","typeLabel":"number\u003cfloat>"},"similarity_boost":{"type":"number","format":"float","default":0.75,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.similarity_boost","typeLabel":"number\u003cfloat>"},"speed":{"type":"number","format":"float","default":1,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.speed","typeLabel":"number\u003cfloat>"},"style":{"type":"number","format":"float","default":0,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.style","typeLabel":"number\u003cfloat>"},"pronunciation_dictionary_locators":{"oneOf":[{"type":"array","maxItems":3,"description":"Pronunciation dictionaries from your own ElevenLabs account, applied in order. Only used when your own ElevenLabs key is connected; Bolna checks each one exists in that account when you save. For most cases, use `pronunciation_rules` on the synthesizer instead.","items":{"type":"object","required":["pronunciation_dictionary_id","version_id"],"properties":{"pronunciation_dictionary_id":{"type":"string","example":"5xM3yVvZQKV0EfqQpLrJ","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.pronunciation_dictionary_locators.oneOf.0.items.[INDEX].pronunciation_dictionary_id","typeLabel":"string"},"version_id":{"type":"string","example":"Tdiw9eBX1Z4oE1fqKD9u","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.pronunciation_dictionary_locators.oneOf.0.items.[INDEX].version_id","typeLabel":"string"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.pronunciation_dictionary_locators.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.pronunciation_dictionary_locators.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":3,"description":"Pronunciation dictionaries from your own ElevenLabs account, applied in order. Only used when your own ElevenLabs key is connected; Bolna checks each one exists in that account when you save. For most cases, use `pronunciation_rules` on the synthesizer instead.","items":{"type":"object","required":["pronunciation_dictionary_id","version_id"],"properties":{"pronunciation_dictionary_id":{"type":"string","example":"5xM3yVvZQKV0EfqQpLrJ"},"version_id":{"type":"string","example":"Tdiw9eBX1Z4oE1fqKD9u"}}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.pronunciation_dictionary_locators.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0.pronunciation_dictionary_locators","typeLabel":"object[] | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.0","typeLabel":"ElevenLabs · object"},{"type":"object","title":"Cartesia","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","example":"Brooke - Big Sister","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.voice","typeLabel":"string"},"voice_id":{"type":"string","example":"e07c00bc-4134-4eae-9ea4-1a55fb45746b","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["sonic-3.6","sonic-3.5","sonic-3"],"example":"sonic-3.5","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","example":"en","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.language","typeLabel":"string"},"speed":{"type":"number","format":"float","default":1,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.speed","typeLabel":"number\u003cfloat>"},"pronunciation_dict_id":{"oneOf":[{"type":"string","description":"A pronunciation dictionary from your own Cartesia account. Only used when your own Cartesia key is connected, on `sonic-3` and newer; Bolna checks it exists in that account when you save. For most cases, use `pronunciation_rules` on the synthesizer instead.","example":"pdict_4zFfRk2Ux8oWnJb7Qc1aLs","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.pronunciation_dict_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"A pronunciation dictionary from your own Cartesia account. Only used when your own Cartesia key is connected, on `sonic-3` and newer; Bolna checks it exists in that account when you save. For most cases, use `pronunciation_rules` on the synthesizer instead.","example":"pdict_4zFfRk2Ux8oWnJb7Qc1aLs","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.pronunciation_dict_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1.pronunciation_dict_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.1","typeLabel":"Cartesia · object"},{"type":"object","title":"Sarvam","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","example":"Priya","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.2.voice","typeLabel":"string"},"voice_id":{"type":"string","example":"priya","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.2.voice_id","typeLabel":"string"},"model":{"type":"string","example":"bulbul:v3","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.2.model","typeLabel":"string"},"language":{"type":"string","example":"hi","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.2.language","typeLabel":"string"},"speed":{"type":"number","format":"float","default":1,"description":"Speaking rate, mapped to Sarvam's pace control. Shown as **Speed rate** in the dashboard. Sarvam's pitch, loudness and temperature parameters are not exposed.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.2.speed","typeLabel":"number\u003cfloat>"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.2","typeLabel":"Sarvam · object"},{"type":"object","title":"Smallest","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","example":"Aditi","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.3.voice","typeLabel":"string"},"voice_id":{"type":"string","example":"aditi","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.3.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["lightning_v3.1","lightning_v3.1_pro"],"example":"lightning_v3.1","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.3.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","example":"en","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.3.language","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.3","typeLabel":"Smallest · object"},{"type":"object","title":"Deepgram","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model"],"properties":{"voice":{"type":"string","example":"Andromeda","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.4.voice","typeLabel":"string"},"voice_id":{"type":"string","example":"andromeda-en","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.4.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["aura-2"],"example":"aura-2","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.4.model","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.4","typeLabel":"Deepgram · object"},{"type":"object","title":"AWS Polly","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","engine","language"],"properties":{"voice":{"type":"string","example":"Matthew","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.5.voice","typeLabel":"string"},"engine":{"type":"string","description":"Polly engine. Polly takes this rather than a `model` key.","enum":["generative","neural","standard"],"example":"generative","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.5.engine","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"Polly locale for the voice","example":"en-US","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.5.language","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.5","typeLabel":"AWS Polly · object"},{"type":"object","title":"Azure","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","model","language"],"properties":{"voice":{"type":"string","description":"Azure neural voice name","example":"en-GB-SoniaNeural","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.6.voice","typeLabel":"string"},"model":{"type":"string","enum":["neural"],"default":"neural","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.6.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","example":"en-GB","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.6.language","typeLabel":"string"},"speed":{"type":"number","format":"float","default":1,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.6.speed","typeLabel":"number\u003cfloat>"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.6","typeLabel":"Azure · object"},{"type":"object","title":"Rime","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","example":"Abbie","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.7.voice","typeLabel":"string"},"voice_id":{"type":"string","example":"abbie","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.7.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["mistv2","arcana"],"example":"mistv2","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.7.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","example":"en","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.7.language","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.7","typeLabel":"Rime · object"},{"type":"object","title":"OpenAI","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","model"],"properties":{"voice":{"type":"string","example":"alloy","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.8.voice","typeLabel":"string"},"model":{"type":"string","example":"tts-1","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.8.model","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.8","typeLabel":"OpenAI · object"},{"type":"object","title":"Gemini","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.voice","typeLabel":"string"},"voice_id":{"type":"string","description":"Gemini voice name","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.voice_id","typeLabel":"string"},"model":{"type":"string","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.model","typeLabel":"string"},"language":{"type":"string","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.language","typeLabel":"string"},"style":{"oneOf":[{"type":"string","default":null,"description":"Feeds Gemini's structured speech metadata","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.style.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"description":"Feeds Gemini's structured speech metadata","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.style.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9.style","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.9","typeLabel":"Gemini · object"},{"type":"object","title":"Maya","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model"],"properties":{"voice":{"type":"string","description":"`Ananya` (female) or `Arjun` (male), the only two voices. Case-sensitive.","example":"Ananya","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.10.voice","typeLabel":"string"},"voice_id":{"type":"string","example":"Ananya","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.10.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["Maya 2 Native"],"default":"Maya 2 Native","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.10.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","default":"en","description":"One of `hi`, `bn`, `gu`, `kn`, `ml`, `mr`, `or`, `pa`, `ta`, `te`, `en` or `auto`. `en` is Indian English; `auto` detects per utterance. Region-qualified codes such as `en-IN` reduce to the primary subtag.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.10.language","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.10","typeLabel":"Maya · object"},{"type":"object","title":"Kalpa","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","properties":{"voice":{"type":"string","default":"Arjun","example":"June","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.voice","typeLabel":"string"},"voice_id":{"oneOf":[{"type":"string","default":null,"example":"8636013a-4e31-4cd4-b706-653d854a714b","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.voice_id.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":"8636013a-4e31-4cd4-b706-653d854a714b","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.voice_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.voice_id","typeLabel":"string | null"},"model":{"type":"string","enum":["kalpa-tts-1","kalpa-tts-multilingual-beta-v0.1","kalpa-tts-beta-v0.1"],"default":"kalpa-tts-1","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.model","typeLabel":"enum\u003cstring>"},"temperature":{"oneOf":[{"type":"number","format":"float","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.temperature.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.temperature","typeLabel":"number\u003cfloat> | null"},"acoustic_temperature":{"oneOf":[{"type":"number","format":"float","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.acoustic_temperature.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.acoustic_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.acoustic_temperature","typeLabel":"number\u003cfloat> | null"},"max_new_tokens":{"oneOf":[{"type":"integer","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.max_new_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.max_new_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.max_new_tokens","typeLabel":"integer | null"},"audio_quality":{"oneOf":[{"type":"string","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.audio_quality.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.audio_quality.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.audio_quality","typeLabel":"string | null"},"chunk_length_schedule":{"oneOf":[{"type":"array","default":null,"items":{"type":"integer","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.chunk_length_schedule.oneOf.0.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.chunk_length_schedule.oneOf.0","typeLabel":"integer[]"},{"type":"null","default":null,"items":{"type":"integer"},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.chunk_length_schedule.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11.chunk_length_schedule","typeLabel":"integer[] | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.11","typeLabel":"Kalpa · object"},{"type":"object","title":"Soniox","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","description":"Built-in voice name","example":"Adrian","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.voice","typeLabel":"string"},"voice_id":{"type":"string","description":"The same name for a built-in voice, or a cloned voice's id","example":"Adrian","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["tts-rt-v2"],"default":"tts-rt-v2","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"Plain ISO code such as `en` or `hi`. Region-qualified codes such as `en-IN` reduce to the primary subtag.","example":"en","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.language","typeLabel":"string"},"speed":{"oneOf":[{"type":"number","format":"float","default":null,"minimum":0.7,"maximum":1.3,"description":"Rejected at agent setup outside `0.7`–`1.3`. Omit to use Soniox's default.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.speed.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","default":null,"minimum":0.7,"maximum":1.3,"description":"Rejected at agent setup outside `0.7`–`1.3`. Omit to use Soniox's default.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.speed","typeLabel":"number\u003cfloat> | null"},"reduce_silence":{"oneOf":[{"type":"boolean","default":null,"description":"Shortens the pauses Soniox inserts between sentences","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.reduce_silence.oneOf.0","typeLabel":"boolean"},{"type":"null","default":null,"description":"Shortens the pauses Soniox inserts between sentences","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.reduce_silence.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12.reduce_silence","typeLabel":"boolean | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.12","typeLabel":"Soniox · object"},{"type":"object","title":"Navana","description":"Provider-specific voice settings; pick the tab matching your `provider`. Resolve a valid `model` and `voice_id` pair with [List voices](/api-reference/voice/get_all) first. Most providers also require `language` here.","required":["voice","voice_id","model","language"],"properties":{"voice":{"type":"string","description":"Voice display name, e.g. `Default Female` or `Ayesha`.","example":"Default Female","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.13.voice","typeLabel":"string"},"voice_id":{"type":"string","description":"Navana voice id: `default_female` or a stock voice id such as `ayesha`.","example":"default_female","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.13.voice_id","typeLabel":"string"},"model":{"type":"string","enum":["navana-tts","navana-tts-fast"],"default":"navana-tts","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.13.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"One of `hi`, `bn`, `gu`, `kn`, `ml`, `mr`, `od`, `ta`, `te` or `en`. Region-qualified codes such as `hi-IN` reduce to the primary subtag, and `od` is sent to Navana as `or`.","example":"hi","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.13.language","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config.oneOf.13","typeLabel":"Navana · object"}],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.provider_config","typeLabel":"ElevenLabs · object | Cartesia · object | Sarvam · object | Smallest · object | Deepgram · object | AWS Polly · object | Azure · object | Rime · object | OpenAI · object | Gemini · object | Maya · object | Kalpa · object | Soniox · object | Navana · object"},"stream":{"type":"boolean","default":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.stream","typeLabel":"boolean"},"caching":{"type":"boolean","default":true,"description":"Re-use synthesised audio for repeated text (welcome messages, static lines) instead of re-synthesising it","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.caching","typeLabel":"boolean"},"buffer_size":{"type":"integer","default":250,"example":250,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.buffer_size","typeLabel":"integer"},"audio_format":{"type":"string","default":"wav","enum":["wav"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.audio_format","typeLabel":"enum\u003cstring>"},"pronunciation_rules":{"oneOf":[{"type":"array","maxItems":100,"description":"Words and how the voice should say them, for brand names, acronyms, codes and place names. Used on `elevenlabs`, and on `cartesia` `sonic-3` and newer; other providers ignore it. Each word can appear once, ignoring capitalization, and an agent can have up to 100 words across all its languages. On a multilingual agent, each language has its own list under `multilingual_config.languages.\u003ccode>.synthesizer.pronunciation_rules`, and a list set here is used for the language the agent starts in. See [Pronunciation](/customizations/pronunciation).","items":{"type":"object","description":"One word and how the voice should say it.","required":["word","say_as"],"properties":{"word":{"type":"string","minLength":1,"maxLength":50,"description":"The word or phrase as it appears in what the agent says. Matching ignores capitalization, and phrases such as `Blue Sky` are replaced as a whole.","example":"HDFC","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.pronunciation_rules.oneOf.0.items.[INDEX].word","typeLabel":"string"},"say_as":{"type":"string","minLength":1,"maxLength":100,"description":"How the voice should say it. Write it in the script the voice speaks.","example":"H D F C bank","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.pronunciation_rules.oneOf.0.items.[INDEX].say_as","typeLabel":"string"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.pronunciation_rules.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.pronunciation_rules.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":100,"description":"Words and how the voice should say them, for brand names, acronyms, codes and place names. Used on `elevenlabs`, and on `cartesia` `sonic-3` and newer; other providers ignore it. Each word can appear once, ignoring capitalization, and an agent can have up to 100 words across all its languages. On a multilingual agent, each language has its own list under `multilingual_config.languages.\u003ccode>.synthesizer.pronunciation_rules`, and a list set here is used for the language the agent starts in. See [Pronunciation](/customizations/pronunciation).","items":{"type":"object","description":"One word and how the voice should say it.","required":["word","say_as"],"properties":{"word":{"type":"string","minLength":1,"maxLength":50,"description":"The word or phrase as it appears in what the agent says. Matching ignores capitalization, and phrases such as `Blue Sky` are replaced as a whole.","example":"HDFC"},"say_as":{"type":"string","minLength":1,"maxLength":100,"description":"How the voice should say it. Write it in the script the voice speaks.","example":"H D F C bank"}}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.pronunciation_rules.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer.pronunciation_rules","typeLabel":"object[] | null"}},"type":"object","required":["provider","provider_config"],"description":"Configuration of Synthesizer model for the agent task","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.synthesizer","typeLabel":"object"},"transcriber":{"type":"object","description":"Configuration of Transcriber model for the agent task","properties":{"provider":{"type":"string","description":"Speech-to-text provider. Any other value is rejected with `400 Invalid value for provider:'\u003cvalue>' provided`.","enum":["deepgram","azure","sarvam","assembly","google","gemini","openai","elevenlabs","smallest","gladia","soniox"],"example":"deepgram","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.provider","typeLabel":"enum\u003cstring>"},"model":{"type":"string","description":"Provider-specific model id, validated together with `language`. For example `nova-3` for Deepgram or `saaras:v4` for Sarvam. See [Supported providers](/api-reference/agent/v2/create#transcriber) for the confirmed model id of every provider.","example":"nova-3","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.model","typeLabel":"string"},"language":{"type":"string","description":"ISO 639-1 code such as `en` or `hi`. Send the plain form even for Sarvam, which rejects `hi-IN`. Multilingual agents override this per language in [`multilingual_config`](/customizations/multilingual-config-reference).","example":"en","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.language","typeLabel":"string"},"stream":{"type":"boolean","default":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.stream","typeLabel":"boolean"},"sampling_rate":{"type":"integer","default":16000,"example":16000,"description":"8000 for telephony audio, 16000 for web calls. Bolna sets this automatically to match the telephony provider.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.sampling_rate","typeLabel":"integer"},"encoding":{"type":"string","default":"linear16","enum":["linear16","mulaw"],"description":"`mulaw` for Twilio and sip-trunk. Every other telephony provider streams `linear16`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.encoding","typeLabel":"enum\u003cstring>"},"endpointing":{"type":"integer","default":500,"example":250,"description":"Milliseconds of silence before the transcript is treated as final.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.endpointing","typeLabel":"integer"},"keywords":{"oneOf":[{"type":"string","default":null,"example":"Bolna,Acme","description":"Comma-separated terms that bias recognition towards brand or domain vocabulary. Read by most transcribers, each with its own term limit. A `word:boost` weight reaches only Deepgram's `nova-2` family and Smallest, and is stripped at save time for every other provider. See [Keywords and context](/customizations/asr-keywords-and-context#provider-support).","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.keywords.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":"Bolna,Acme","description":"Comma-separated terms that bias recognition towards brand or domain vocabulary. Read by most transcribers, each with its own term limit. A `word:boost` weight reaches only Deepgram's `nova-2` family and Smallest, and is stripped at save time for every other provider. See [Keywords and context](/customizations/asr-keywords-and-context#provider-support).","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.keywords","typeLabel":"string | null"},"context":{"oneOf":[{"type":"string","default":null,"example":"Inbound support line for a voice AI platform. Callers ask about telephony setup and billing.","description":"Plain description of the call that biases recognition towards what the model should expect. This is not a prompt for the language model. Honoured by [AssemblyAI](/assemblyai) (max 1750 characters, Universal-3 models only), [Soniox](/soniox) (max 10000 characters) and [Sarvam](/sarvam-transcriber); ignored by every other provider. See [Keywords and context](/customizations/asr-keywords-and-context).","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.context.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":"Inbound support line for a voice AI platform. Callers ask about telephony setup and billing.","description":"Plain description of the call that biases recognition towards what the model should expect. This is not a prompt for the language model. Honoured by [AssemblyAI](/assemblyai) (max 1750 characters, Universal-3 models only), [Soniox](/soniox) (max 10000 characters) and [Sarvam](/sarvam-transcriber); ignored by every other provider. See [Keywords and context](/customizations/asr-keywords-and-context).","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.context.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.context","typeLabel":"string | null"},"vad_threshold":{"type":"number","format":"float","default":0.5,"description":"Voice-activity-detection sensitivity.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.vad_threshold","typeLabel":"number\u003cfloat>"},"vad_prefix_padding_ms":{"type":"integer","default":300,"description":"Milliseconds of audio retained ahead of detected speech.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.vad_prefix_padding_ms","typeLabel":"integer"},"eot_threshold":{"oneOf":[{"type":"number","format":"float","default":null,"example":0.7,"description":"Confidence required before an end-of-turn is emitted, `0.5`–`0.9`. **[Deepgram Flux](/deepgram-flux) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eot_threshold.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","default":null,"example":0.7,"description":"Confidence required before an end-of-turn is emitted, `0.5`–`0.9`. **[Deepgram Flux](/deepgram-flux) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eot_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eot_threshold","typeLabel":"number\u003cfloat> | null"},"eot_timeout_ms":{"oneOf":[{"type":"integer","default":null,"example":1000,"description":"Maximum silence before an end-of-turn is forced, in milliseconds. **[Deepgram Flux](/deepgram-flux) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eot_timeout_ms.oneOf.0","typeLabel":"integer"},{"type":"null","default":null,"example":1000,"description":"Maximum silence before an end-of-turn is forced, in milliseconds. **[Deepgram Flux](/deepgram-flux) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eot_timeout_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eot_timeout_ms","typeLabel":"integer | null"},"eager_eot_threshold":{"oneOf":[{"type":"number","format":"float","default":null,"example":0.5,"description":"Confidence at which an `EagerEndOfTurn` fires so the LLM can start speculatively. **[Deepgram Flux](/deepgram-flux) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eager_eot_threshold.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","default":null,"example":0.5,"description":"Confidence at which an `EagerEndOfTurn` fires so the LLM can start speculatively. **[Deepgram Flux](/deepgram-flux) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eager_eot_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.eager_eot_threshold","typeLabel":"number\u003cfloat> | null"},"assemblyai_config":{"oneOf":[{"type":"object","default":null,"description":"AssemblyAI session settings. Every field is optional; one left out keeps AssemblyAI's own default. `mode`, `interruption_delay` and the voice focus fields apply to the Universal-3 models only and are not sent on legacy models. **[AssemblyAI](/assemblyai) only.** See [Session settings](/assemblyai#session-settings).","properties":{"mode":{"oneOf":[{"type":"string","enum":["balanced","max_accuracy","min_latency"],"example":"balanced","description":"Preset that sets the defaults of the turn settings. `balanced` is AssemblyAI's default and suits voice agents; `max_accuracy` ends turns a few hundred milliseconds later.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["balanced","max_accuracy","min_latency"],"example":"balanced","description":"Preset that sets the defaults of the turn settings. `balanced` is AssemblyAI's default and suits voice agents; `max_accuracy` ends turns a few hundred milliseconds later.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.mode","typeLabel":"enum\u003cstring> | null"},"min_turn_silence":{"oneOf":[{"type":"integer","minimum":0,"example":200,"description":"Milliseconds of silence before AssemblyAI checks whether the caller has finished.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.min_turn_silence.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"example":200,"description":"Milliseconds of silence before AssemblyAI checks whether the caller has finished.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.min_turn_silence.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.min_turn_silence","typeLabel":"integer | null"},"max_turn_silence":{"oneOf":[{"type":"integer","minimum":0,"example":2000,"description":"Milliseconds of silence after which the caller's turn always ends. AssemblyAI's default is 1280.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.max_turn_silence.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"example":2000,"description":"Milliseconds of silence after which the caller's turn always ends. AssemblyAI's default is 1280.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.max_turn_silence.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.max_turn_silence","typeLabel":"integer | null"},"interruption_delay":{"oneOf":[{"type":"integer","minimum":0,"maximum":1000,"example":300,"description":"Milliseconds AssemblyAI waits before sending the first partial transcript.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.interruption_delay.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":1000,"example":300,"description":"Milliseconds AssemblyAI waits before sending the first partial transcript.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.interruption_delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.interruption_delay","typeLabel":"integer | null"},"vad_threshold":{"oneOf":[{"type":"number","format":"float","minimum":0,"maximum":1,"example":0.4,"description":"Confidence AssemblyAI needs before treating audio as speech. Defaults to 0.2 on the Universal-3 models and 0.4 on legacy models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.vad_threshold.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","minimum":0,"maximum":1,"example":0.4,"description":"Confidence AssemblyAI needs before treating audio as speech. Defaults to 0.2 on the Universal-3 models and 0.4 on legacy models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.vad_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.vad_threshold","typeLabel":"number\u003cfloat> | null"},"voice_focus":{"oneOf":[{"type":"string","enum":["near-field","far-field"],"example":"near-field","description":"Suppresses background voices and noise. `near-field` for handsets and headsets, `far-field` for speakerphones.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.voice_focus.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["near-field","far-field"],"example":"near-field","description":"Suppresses background voices and noise. `near-field` for handsets and headsets, `far-field` for speakerphones.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.voice_focus.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.voice_focus","typeLabel":"enum\u003cstring> | null"},"voice_focus_threshold":{"oneOf":[{"type":"number","format":"float","minimum":0,"maximum":1,"example":0.6,"description":"How strongly voice focus suppresses audio that is not the main speaker. Requires `voice_focus`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.voice_focus_threshold.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","minimum":0,"maximum":1,"example":0.6,"description":"How strongly voice focus suppresses audio that is not the main speaker. Requires `voice_focus`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.voice_focus_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0.voice_focus_threshold","typeLabel":"number\u003cfloat> | null"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.0","typeLabel":"object"},{"type":"null","default":null,"description":"AssemblyAI session settings. Every field is optional; one left out keeps AssemblyAI's own default. `mode`, `interruption_delay` and the voice focus fields apply to the Universal-3 models only and are not sent on legacy models. **[AssemblyAI](/assemblyai) only.** See [Session settings](/assemblyai#session-settings).","properties":{"mode":{"oneOf":[{"type":"string","enum":["balanced","max_accuracy","min_latency"],"example":"balanced","description":"Preset that sets the defaults of the turn settings. `balanced` is AssemblyAI's default and suits voice agents; `max_accuracy` ends turns a few hundred milliseconds later."},{"type":"null","enum":["balanced","max_accuracy","min_latency"],"example":"balanced","description":"Preset that sets the defaults of the turn settings. `balanced` is AssemblyAI's default and suits voice agents; `max_accuracy` ends turns a few hundred milliseconds later."}]},"min_turn_silence":{"oneOf":[{"type":"integer","minimum":0,"example":200,"description":"Milliseconds of silence before AssemblyAI checks whether the caller has finished."},{"type":"null","minimum":0,"example":200,"description":"Milliseconds of silence before AssemblyAI checks whether the caller has finished."}]},"max_turn_silence":{"oneOf":[{"type":"integer","minimum":0,"example":2000,"description":"Milliseconds of silence after which the caller's turn always ends. AssemblyAI's default is 1280."},{"type":"null","minimum":0,"example":2000,"description":"Milliseconds of silence after which the caller's turn always ends. AssemblyAI's default is 1280."}]},"interruption_delay":{"oneOf":[{"type":"integer","minimum":0,"maximum":1000,"example":300,"description":"Milliseconds AssemblyAI waits before sending the first partial transcript."},{"type":"null","minimum":0,"maximum":1000,"example":300,"description":"Milliseconds AssemblyAI waits before sending the first partial transcript."}]},"vad_threshold":{"oneOf":[{"type":"number","format":"float","minimum":0,"maximum":1,"example":0.4,"description":"Confidence AssemblyAI needs before treating audio as speech. Defaults to 0.2 on the Universal-3 models and 0.4 on legacy models."},{"type":"null","format":"float","minimum":0,"maximum":1,"example":0.4,"description":"Confidence AssemblyAI needs before treating audio as speech. Defaults to 0.2 on the Universal-3 models and 0.4 on legacy models."}]},"voice_focus":{"oneOf":[{"type":"string","enum":["near-field","far-field"],"example":"near-field","description":"Suppresses background voices and noise. `near-field` for handsets and headsets, `far-field` for speakerphones."},{"type":"null","enum":["near-field","far-field"],"example":"near-field","description":"Suppresses background voices and noise. `near-field` for handsets and headsets, `far-field` for speakerphones."}]},"voice_focus_threshold":{"oneOf":[{"type":"number","format":"float","minimum":0,"maximum":1,"example":0.6,"description":"How strongly voice focus suppresses audio that is not the main speaker. Requires `voice_focus`."},{"type":"null","format":"float","minimum":0,"maximum":1,"example":0.6,"description":"How strongly voice focus suppresses audio that is not the main speaker. Requires `voice_focus`."}]}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.assemblyai_config","typeLabel":"object | null"},"delay":{"oneOf":[{"type":"string","default":"medium","enum":["minimal","low","medium","high","xhigh"],"description":"Latency-versus-accuracy trade-off. **[OpenAI Realtime](/openai-transcriber) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.delay.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","default":"medium","enum":["minimal","low","medium","high","xhigh"],"description":"Latency-versus-accuracy trade-off. **[OpenAI Realtime](/openai-transcriber) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.delay","typeLabel":"enum\u003cstring> | null"},"noise_reduction":{"type":"boolean","default":false,"description":"Near-field noise reduction for call-centre and office audio. **[OpenAI Realtime](/openai-transcriber) only.**","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.noise_reduction","typeLabel":"boolean"},"language_hints":{"oneOf":[{"type":"array","default":null,"items":{"type":"string","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.language_hints.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["en","hi"],"description":"Candidate languages for code-switching conversations, on providers that support language identification.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.language_hints.oneOf.0","typeLabel":"string[]"},{"type":"null","default":null,"items":{"type":"string"},"example":["en","hi"],"description":"Candidate languages for code-switching conversations, on providers that support language identification.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.language_hints.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.language_hints","typeLabel":"string[] | null"},"task":{"type":"string","default":"transcribe","description":"Transcription task. Agents created through the dashboard carry `transcribe`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.task","typeLabel":"string"},"deepgram_host":{"oneOf":[{"type":"string","default":null,"example":"api.example-onprem.com","description":"Host of a dedicated or self-hosted Deepgram deployment to use instead of Bolna's shared Deepgram. Relevant to [on-premise deployments](/enterprise/on-premise-deployments). Leave `null` to use Bolna's.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_host.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":"api.example-onprem.com","description":"Host of a dedicated or self-hosted Deepgram deployment to use instead of Bolna's shared Deepgram. Relevant to [on-premise deployments](/enterprise/on-premise-deployments). Leave `null` to use Bolna's.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_host.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_host","typeLabel":"string | null"},"deepgram_host_protocol":{"oneOf":[{"type":"string","default":null,"example":"wss","description":"Protocol used to reach `deepgram_host`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_host_protocol.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":"wss","description":"Protocol used to reach `deepgram_host`.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_host_protocol.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_host_protocol","typeLabel":"string | null"},"deepgram_flux_host":{"oneOf":[{"type":"string","default":null,"example":"flux.example-onprem.com","description":"Equivalent of `deepgram_host` for [Deepgram Flux](/deepgram-flux) models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_flux_host.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"example":"flux.example-onprem.com","description":"Equivalent of `deepgram_host` for [Deepgram Flux](/deepgram-flux) models.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_flux_host.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber.deepgram_flux_host","typeLabel":"string | null"}},"required":["provider","model","language"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.transcriber","typeLabel":"object"},"input":{"properties":{"provider":{"type":"string","default":"plivo","description":"Telephony provider carrying the call audio; `input` and `output` normally match. `trunk` is for [SIP trunks](/api-reference/trunks/overview) and `sip-trunk` for Legacy SIP trunks (deprecated). `freeswitch` is web calling, and `default` and `database` are internal. See [Supported telephony providers](/supported-telephony-providers).","enum":["twilio","plivo","exotel","vobiz","trunk","sip-trunk","freeswitch","default","database"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.input.provider","typeLabel":"enum\u003cstring>"},"format":{"type":"string","default":"wav","description":"`wav` for twilio, plivo, exotel and vobiz; `linear16` for trunk; `ulaw` for sip-trunk.","enum":["wav","linear16","ulaw"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.input.format","typeLabel":"enum\u003cstring>"}},"type":"object","required":["provider","format"],"description":"Configuration of Input handler","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.input","typeLabel":"object"},"output":{"properties":{"provider":{"type":"string","default":"plivo","description":"Telephony provider carrying the call audio; `input` and `output` normally match. `trunk` is for [SIP trunks](/api-reference/trunks/overview) and `sip-trunk` for Legacy SIP trunks (deprecated). `freeswitch` is web calling, and `default` and `database` are internal. See [Supported telephony providers](/supported-telephony-providers).","enum":["twilio","plivo","exotel","vobiz","trunk","sip-trunk","freeswitch","default","database"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.output.provider","typeLabel":"enum\u003cstring>"},"format":{"type":"string","default":"wav","description":"`wav` for twilio, plivo, exotel and vobiz; `linear16` for trunk; `ulaw` for sip-trunk.","enum":["wav","linear16","ulaw"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.output.format","typeLabel":"enum\u003cstring>"}},"type":"object","required":["provider","format"],"description":"Configuration of Output handler","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.output","typeLabel":"object"},"api_tools":{"oneOf":[{"type":"object","properties":{"tools":{"type":"array","items":{"type":"object","title":"transfer_call","properties":{"name":{"type":"string","description":"Any unique name for this function tool","example":"transfer_call_support","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].name","typeLabel":"string"},"key":{"type":"string","enum":["transfer_call"],"default":"transfer_call","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].key","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Use this tool to transfer the call","example":"Use this tool to transfer the call","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].description","typeLabel":"string"},"parameters":{"type":"object","properties":{"type":{"type":"string","example":"object","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.type","typeLabel":"string"},"properties":{"type":"object","properties":{"call_sid":{"type":"object","properties":{"type":{"type":"string","example":"string","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.properties.call_sid.type","typeLabel":"string"},"description":{"type":"string","description":"unique call id","example":"unique call id","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.properties.call_sid.description","typeLabel":"string"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.properties.call_sid","typeLabel":"object"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","enum":["call_sid"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.required.items.[INDEX]","typeLabel":"enum\u003cstring>"},"example":[["call_sid"]],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters.required","typeLabel":"enum\u003cstring>[]"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX].parameters","typeLabel":"object"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools.items.[INDEX]","typeLabel":"transfer_call · object"},"description":"Description of all the tools you'd like to add to the agent. It needs to be a JSON string as this will be passed to LLM.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools","typeLabel":"transfer_call · object[]"},"tools_params":{"type":"object","properties":{"transfer_call_support":{"type":"object","properties":{"method":{"type":"string","enum":["POST","GET"],"default":"GET","description":"Type of request","example":"POST","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.method","typeLabel":"enum\u003cstring>"},"url":{"oneOf":[{"type":"string","format":"uri","description":"Link of the URL to control the transferring of call","example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Link of the URL to control the transferring of call","example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.url.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.url","typeLabel":"string\u003curi> | null"},"api_token":{"oneOf":[{"type":"string","example":null,"description":"API Token in case the URL needs authentication","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.api_token.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"description":"API Token in case the URL needs authentication","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.api_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.api_token","typeLabel":"string | null"},"param":{"description":"Stringified JSON of the tool schema","type":"string","example":"{\"call_transfer_number\": \"+19876543210\",\"call_sid\": \"%(call_sid)s\"}","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support.param","typeLabel":"string"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params.transfer_call_support","typeLabel":"object"}},"description":"Parameters for each tool, where keys must match the `name` field in the `tools` array.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0.tools_params","typeLabel":"object"}},"default":null,"description":"Api tools you'd like the agents to have access to","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"tools":{"type":"array","items":{"type":"object","title":"transfer_call","properties":{"name":{"type":"string","description":"Any unique name for this function tool","example":"transfer_call_support"},"key":{"type":"string","enum":["transfer_call"],"default":"transfer_call"},"description":{"type":"string","description":"Use this tool to transfer the call","example":"Use this tool to transfer the call"},"parameters":{"type":"object","properties":{"type":{"type":"string","example":"object"},"properties":{"type":"object","properties":{"call_sid":{"type":"object","properties":{"type":{"type":"string","example":"string"},"description":{"type":"string","description":"unique call id","example":"unique call id"}}}}},"required":{"type":"array","items":{"type":"string","enum":["call_sid"]},"example":[["call_sid"]]}}}}},"description":"Description of all the tools you'd like to add to the agent. It needs to be a JSON string as this will be passed to LLM."},"tools_params":{"type":"object","properties":{"transfer_call_support":{"type":"object","properties":{"method":{"type":"string","enum":["POST","GET"],"default":"GET","description":"Type of request","example":"POST"},"url":{"oneOf":[{"type":"string","format":"uri","description":"Link of the URL to control the transferring of call","example":null},{"type":"null","format":"uri","description":"Link of the URL to control the transferring of call","example":null}]},"api_token":{"oneOf":[{"type":"string","example":null,"description":"API Token in case the URL needs authentication"},{"type":"null","example":null,"description":"API Token in case the URL needs authentication"}]},"param":{"description":"Stringified JSON of the tool schema","type":"string","example":"{\"call_transfer_number\": \"+19876543210\",\"call_sid\": \"%(call_sid)s\"}"}}}},"description":"Parameters for each tool, where keys must match the `name` field in the `tools` array."}},"default":null,"description":"Api tools you'd like the agents to have access to","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.api_tools","typeLabel":"object | null"},"s2s":{"oneOf":[{"properties":{"provider":{"type":"string","description":"Speech-to-speech provider","enum":["openai_realtime","gemini_live"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider","typeLabel":"enum\u003cstring>"},"provider_config":{"oneOf":[{"type":"object","description":"Provider specific settings","properties":{"model":{"type":"string","description":"OpenAI Realtime model","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5"],"default":"gpt-realtime-2.1","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.model","typeLabel":"enum\u003cstring>"},"voice":{"type":"string","description":"Realtime voice","enum":["alloy","ash","ballad","cedar","coral","echo","marin","sage","shimmer","verse"],"default":"marin","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.voice","typeLabel":"enum\u003cstring>"},"turn_detection_type":{"type":"string","description":"semantic_vad judges whether the caller finished a thought; server_vad uses a silence timer","enum":["semantic_vad","server_vad"],"default":"semantic_vad","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.turn_detection_type","typeLabel":"enum\u003cstring>"},"eagerness":{"type":"string","description":"semantic_vad only. How long the model lets a hesitant caller keep the floor","enum":["auto","low","medium","high"],"default":"auto","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.eagerness","typeLabel":"enum\u003cstring>"},"vad_threshold":{"type":"number","description":"server_vad only. Speech detection sensitivity","default":0.5,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.vad_threshold","typeLabel":"number"},"vad_silence_duration_ms":{"type":"integer","description":"server_vad only. Silence before the caller's turn is considered over","default":500,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.vad_silence_duration_ms","typeLabel":"integer"},"vad_prefix_padding_ms":{"type":"integer","description":"server_vad only. Audio retained ahead of detected speech","default":300,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.vad_prefix_padding_ms","typeLabel":"integer"},"reasoning_effort":{"oneOf":[{"type":"string","description":"Reasoning models only. Higher settings answer more slowly","enum":["minimal","low","medium","high","xhigh"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Reasoning models only. Higher settings answer more slowly","enum":["minimal","low","medium","high","xhigh"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.reasoning_effort","typeLabel":"enum\u003cstring> | null"},"max_output_tokens":{"oneOf":[{"type":"integer","description":"Cap on a single response","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.max_output_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Cap on a single response","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.max_output_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.max_output_tokens","typeLabel":"integer | null"},"transcription_model":{"type":"string","description":"Model used to transcribe the caller for the record. Does not affect what the agent hears","default":"gpt-4o-mini-transcribe","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.transcription_model","typeLabel":"string"},"language":{"oneOf":[{"type":"string","description":"ISO code for the caller's language. Without it the model detects per utterance","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.language.oneOf.0","typeLabel":"string"},{"type":"null","description":"ISO code for the caller's language. Without it the model detects per utterance","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0.language","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.0","typeLabel":"object"},{"type":"object","description":"Provider specific settings","properties":{"model":{"type":"string","description":"Gemini Live model","enum":["gemini-3.1-flash-live-preview","gemini-2.5-flash-native-audio-preview-12-2025"],"default":"gemini-3.1-flash-live-preview","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.model","typeLabel":"enum\u003cstring>"},"voice":{"type":"string","description":"Gemini Live prebuilt voice","default":"Kore","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.voice","typeLabel":"string"},"language":{"oneOf":[{"type":"string","description":"BCP-47 code, for example en-US or hi-IN","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.language.oneOf.0","typeLabel":"string"},{"type":"null","description":"BCP-47 code, for example en-US or hi-IN","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.language","typeLabel":"string | null"},"temperature":{"oneOf":[{"type":"number","description":"Response variability","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.temperature.oneOf.0","typeLabel":"number"},{"type":"null","description":"Response variability","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.temperature","typeLabel":"number | null"},"start_sensitivity":{"oneOf":[{"type":"string","description":"How readily the caller starting to speak is detected","enum":["START_SENSITIVITY_HIGH","START_SENSITIVITY_LOW"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.start_sensitivity.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"How readily the caller starting to speak is detected","enum":["START_SENSITIVITY_HIGH","START_SENSITIVITY_LOW"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.start_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.start_sensitivity","typeLabel":"enum\u003cstring> | null"},"end_sensitivity":{"oneOf":[{"type":"string","description":"How long to wait before treating the caller's turn as finished","enum":["END_SENSITIVITY_HIGH","END_SENSITIVITY_LOW"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.end_sensitivity.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"How long to wait before treating the caller's turn as finished","enum":["END_SENSITIVITY_HIGH","END_SENSITIVITY_LOW"],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.end_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.end_sensitivity","typeLabel":"enum\u003cstring> | null"},"vad_silence_duration_ms":{"type":"integer","description":"Silence before the caller's turn is considered over. Usable band is 500 to 800ms","default":600,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.vad_silence_duration_ms","typeLabel":"integer"},"vad_prefix_padding_ms":{"oneOf":[{"type":"integer","description":"Audio retained ahead of detected speech","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.vad_prefix_padding_ms.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Audio retained ahead of detected speech","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.vad_prefix_padding_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.vad_prefix_padding_ms","typeLabel":"integer | null"},"enable_session_resumption":{"type":"boolean","description":"Restore the session from the provider's handle when Gemini rotates it, so long calls continue uninterrupted","default":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.enable_session_resumption","typeLabel":"boolean"},"enable_context_compression":{"type":"boolean","description":"Compress the context window so long calls do not hit the model's limit","default":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1.enable_context_compression","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.provider_config","typeLabel":"object"},"welcome_audio_gate_ms":{"type":"integer","description":"Caller audio is ignored for this long after the greeting starts, so the agent's own voice does not trip the provider's voice activity detection","default":1500,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0.welcome_audio_gate_ms","typeLabel":"integer"}},"required":["provider","provider_config"],"type":"object","description":"Speech-to-speech configuration. When set, one realtime model replaces llm_agent, transcriber and synthesizer, which must all be null","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.0","typeLabel":"object"},{"properties":{"provider":{"type":"string","description":"Speech-to-speech provider","enum":["openai_realtime","gemini_live"]},"provider_config":{"oneOf":[{"type":"object","description":"Provider specific settings","properties":{"model":{"type":"string","description":"OpenAI Realtime model","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5"],"default":"gpt-realtime-2.1"},"voice":{"type":"string","description":"Realtime voice","enum":["alloy","ash","ballad","cedar","coral","echo","marin","sage","shimmer","verse"],"default":"marin"},"turn_detection_type":{"type":"string","description":"semantic_vad judges whether the caller finished a thought; server_vad uses a silence timer","enum":["semantic_vad","server_vad"],"default":"semantic_vad"},"eagerness":{"type":"string","description":"semantic_vad only. How long the model lets a hesitant caller keep the floor","enum":["auto","low","medium","high"],"default":"auto"},"vad_threshold":{"type":"number","description":"server_vad only. Speech detection sensitivity","default":0.5},"vad_silence_duration_ms":{"type":"integer","description":"server_vad only. Silence before the caller's turn is considered over","default":500},"vad_prefix_padding_ms":{"type":"integer","description":"server_vad only. Audio retained ahead of detected speech","default":300},"reasoning_effort":{"oneOf":[{"type":"string","description":"Reasoning models only. Higher settings answer more slowly","enum":["minimal","low","medium","high","xhigh"]},{"type":"null","description":"Reasoning models only. Higher settings answer more slowly","enum":["minimal","low","medium","high","xhigh"]}]},"max_output_tokens":{"oneOf":[{"type":"integer","description":"Cap on a single response"},{"type":"null","description":"Cap on a single response"}]},"transcription_model":{"type":"string","description":"Model used to transcribe the caller for the record. Does not affect what the agent hears","default":"gpt-4o-mini-transcribe"},"language":{"oneOf":[{"type":"string","description":"ISO code for the caller's language. Without it the model detects per utterance"},{"type":"null","description":"ISO code for the caller's language. Without it the model detects per utterance"}]}}},{"type":"object","description":"Provider specific settings","properties":{"model":{"type":"string","description":"Gemini Live model","enum":["gemini-3.1-flash-live-preview","gemini-2.5-flash-native-audio-preview-12-2025"],"default":"gemini-3.1-flash-live-preview"},"voice":{"type":"string","description":"Gemini Live prebuilt voice","default":"Kore"},"language":{"oneOf":[{"type":"string","description":"BCP-47 code, for example en-US or hi-IN"},{"type":"null","description":"BCP-47 code, for example en-US or hi-IN"}]},"temperature":{"oneOf":[{"type":"number","description":"Response variability"},{"type":"null","description":"Response variability"}]},"start_sensitivity":{"oneOf":[{"type":"string","description":"How readily the caller starting to speak is detected","enum":["START_SENSITIVITY_HIGH","START_SENSITIVITY_LOW"]},{"type":"null","description":"How readily the caller starting to speak is detected","enum":["START_SENSITIVITY_HIGH","START_SENSITIVITY_LOW"]}]},"end_sensitivity":{"oneOf":[{"type":"string","description":"How long to wait before treating the caller's turn as finished","enum":["END_SENSITIVITY_HIGH","END_SENSITIVITY_LOW"]},{"type":"null","description":"How long to wait before treating the caller's turn as finished","enum":["END_SENSITIVITY_HIGH","END_SENSITIVITY_LOW"]}]},"vad_silence_duration_ms":{"type":"integer","description":"Silence before the caller's turn is considered over. Usable band is 500 to 800ms","default":600},"vad_prefix_padding_ms":{"oneOf":[{"type":"integer","description":"Audio retained ahead of detected speech"},{"type":"null","description":"Audio retained ahead of detected speech"}]},"enable_session_resumption":{"type":"boolean","description":"Restore the session from the provider's handle when Gemini rotates it, so long calls continue uninterrupted","default":true},"enable_context_compression":{"type":"boolean","description":"Compress the context window so long calls do not hit the model's limit","default":true}}}]},"welcome_audio_gate_ms":{"type":"integer","description":"Caller audio is ignored for this long after the greeting starts, so the agent's own voice does not trip the provider's voice activity detection","default":1500}},"required":["provider","provider_config"],"type":"null","description":"Speech-to-speech configuration. When set, one realtime model replaces llm_agent, transcriber and synthesizer, which must all be null","default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.s2s","typeLabel":"object | null"},"multilingual_config":{"oneOf":[{"type":"object","description":"Enables a multilingual agent that can understand and respond in multiple languages within a single call. The top-level `transcriber` and `synthesizer` act as the base; each language overrides them. See the [Multilingual Config Reference](/customizations/multilingual-config-reference).","required":["enabled","languages"],"properties":{"enabled":{"type":"boolean","description":"Must be `true` for multilingual to take effect. When `false` or omitted, the agent runs single-language and this object is ignored.","default":false,"example":true,"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.enabled","typeLabel":"boolean"},"languages":{"type":"object","description":"Map of ISO 639-1 language code to its per-language configuration. Must contain at least 2 languages.","minProperties":2,"additionalProperties":{"type":"object","description":"Per-language configuration. Starts from the base transcriber and synthesizer and applies these overrides.","required":["synthesizer"],"properties":{"synthesizer":{"type":"object","description":"Text-to-speech configuration for this language. Extra provider fields are allowed.","required":["provider","provider_config"],"properties":{"provider":{"type":"string","description":"TTS provider for this language.","example":"sarvam","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.provider","typeLabel":"string"},"provider_config":{"type":"object","description":"Provider-specific TTS configuration (for example `voice_id`, `model`). For `sarvam`, `smallest`, `cartesia`, `openai`, and `polly`, the language is resolved into `provider_config.language` automatically.","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.provider_config","typeLabel":"object"},"buffer_size":{"oneOf":[{"type":"integer","description":"Optional synthesizer buffer size for this language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.buffer_size.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Optional synthesizer buffer size for this language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.buffer_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.buffer_size","typeLabel":"integer | null"},"pronunciation_rules":{"oneOf":[{"type":"array","maxItems":100,"description":"This language's word list: words and how this language's voice should say them. The same word can sound different in each language. See [Pronunciation](/customizations/pronunciation).","items":{"type":"object","description":"One word and how the voice should say it.","required":["word","say_as"],"properties":{"word":{"type":"string","minLength":1,"maxLength":50,"description":"The word or phrase as it appears in what the agent says. Matching ignores capitalization, and phrases such as `Blue Sky` are replaced as a whole.","example":"HDFC","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.pronunciation_rules.oneOf.0.items.[INDEX].word","typeLabel":"string"},"say_as":{"type":"string","minLength":1,"maxLength":100,"description":"How the voice should say it. Write it in the script the voice speaks.","example":"H D F C bank","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.pronunciation_rules.oneOf.0.items.[INDEX].say_as","typeLabel":"string"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.pronunciation_rules.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.pronunciation_rules.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":100,"description":"This language's word list: words and how this language's voice should say them. The same word can sound different in each language. See [Pronunciation](/customizations/pronunciation).","items":{"type":"object","description":"One word and how the voice should say it.","required":["word","say_as"],"properties":{"word":{"type":"string","minLength":1,"maxLength":50,"description":"The word or phrase as it appears in what the agent says. Matching ignores capitalization, and phrases such as `Blue Sky` are replaced as a whole.","example":"HDFC"},"say_as":{"type":"string","minLength":1,"maxLength":100,"description":"How the voice should say it. Write it in the script the voice speaks.","example":"H D F C bank"}}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.pronunciation_rules.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer.pronunciation_rules","typeLabel":"object[] | null"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.synthesizer","typeLabel":"object"},"transcriber":{"type":"object","description":"Speech-to-text override for this language. If omitted, the base transcriber is reused with this language code applied. Extra provider fields (for example `model`, `language_hints`) are allowed.","required":["language"],"properties":{"language":{"type":"string","description":"Language code for this entry's transcriber.","example":"hi","isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.transcriber.language","typeLabel":"string"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.transcriber","typeLabel":"object"},"system_prompt":{"oneOf":[{"type":"string","description":"Prompt activated while the agent speaks this language. Write it in the language's native script.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","description":"Prompt activated while the agent speaks this language. Write it in the language's native script.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.system_prompt","typeLabel":"string | null"},"handoff_message":{"oneOf":[{"type":"string","description":"Message played when the agent switches to this language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.handoff_message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Message played when the agent switches to this language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.handoff_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.handoff_message","typeLabel":"string | null"},"agent_name":{"oneOf":[{"type":"string","description":"Agent name used while speaking this language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.agent_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Agent name used while speaking this language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.agent_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.agent_name","typeLabel":"string | null"},"welcome_message":{"oneOf":[{"type":"string","description":"Welcome message for calls that start in this language. Supports variables. When omitted or blank, `agent_welcome_message` is used. See [Welcome message per language](/customizations/start-call-in-language#welcome-message-per-language).","example":"नमस्ते {{name}}, मैं राज बोल रहा हूँ।","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.welcome_message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Welcome message for calls that start in this language. Supports variables. When omitted or blank, `agent_welcome_message` is used. See [Welcome message per language](/customizations/start-call-in-language#welcome-message-per-language).","example":"नमस्ते {{name}}, मैं राज बोल रहा हूँ।","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.welcome_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties.welcome_message","typeLabel":"string | null"}},"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages.additionalProperties","typeLabel":"object"},"example":{"en":{"synthesizer":{"provider":"elevenlabs","provider_config":{"voice_id":"21m00Tcm4TlvDq8ikWAM","model":"eleven_turbo_v2_5"}},"system_prompt":"You are a helpful assistant. Keep replies short.","agent_name":"Alex"},"hi":{"transcriber":{"language":"hi"},"synthesizer":{"provider":"sarvam","provider_config":{"voice_id":"suhani","model":"bulbul:v3"}},"system_prompt":"आप एक सहायक एजेंट हैं। हिंदी में संक्षेप में उत्तर दें।","handoff_message":"ठीक है, मैं हिंदी में बात करता हूँ।","agent_name":"राज","welcome_message":"नमस्ते {{name}}, मैं राज बोल रहा हूँ।"}},"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.languages","typeLabel":"object"},"active_language":{"type":"string","description":"Language code the agent starts the call in. Must be one of the keys in `languages`.","default":"en","example":"en","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.active_language","typeLabel":"string"},"switch_tool_description":{"oneOf":[{"type":"string","description":"Overrides the description of the `switch_language` tool the LLM uses to change languages mid-call.","example":"Switch the conversation language when the caller changes language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.switch_tool_description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Overrides the description of the `switch_language` tool the LLM uses to change languages mid-call.","example":"Switch the conversation language when the caller changes language.","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.switch_tool_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0.switch_tool_description","typeLabel":"string | null"}},"default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Enables a multilingual agent that can understand and respond in multiple languages within a single call. The top-level `transcriber` and `synthesizer` act as the base; each language overrides them. See the [Multilingual Config Reference](/customizations/multilingual-config-reference).","required":["enabled","languages"],"properties":{"enabled":{"type":"boolean","description":"Must be `true` for multilingual to take effect. When `false` or omitted, the agent runs single-language and this object is ignored.","default":false,"example":true},"active_language":{"type":"string","description":"Language code the agent starts the call in. Must be one of the keys in `languages`.","default":"en","example":"en"},"languages":{"type":"object","description":"Map of ISO 639-1 language code to its per-language configuration. Must contain at least 2 languages.","minProperties":2,"additionalProperties":{"type":"object","description":"Per-language configuration. Starts from the base transcriber and synthesizer and applies these overrides.","required":["synthesizer"],"properties":{"transcriber":{"type":"object","description":"Speech-to-text override for this language. If omitted, the base transcriber is reused with this language code applied. Extra provider fields (for example `model`, `language_hints`) are allowed.","required":["language"],"properties":{"language":{"type":"string","description":"Language code for this entry's transcriber.","example":"hi"}}},"synthesizer":{"type":"object","description":"Text-to-speech configuration for this language. Extra provider fields are allowed.","required":["provider","provider_config"],"properties":{"provider":{"type":"string","description":"TTS provider for this language.","example":"sarvam"},"provider_config":{"type":"object","description":"Provider-specific TTS configuration (for example `voice_id`, `model`). For `sarvam`, `smallest`, `cartesia`, `openai`, and `polly`, the language is resolved into `provider_config.language` automatically."},"buffer_size":{"oneOf":[{"type":"integer","description":"Optional synthesizer buffer size for this language."},{"type":"null","description":"Optional synthesizer buffer size for this language."}]},"pronunciation_rules":{"oneOf":[{"type":"array","maxItems":100,"description":"This language's word list: words and how this language's voice should say them. The same word can sound different in each language. See [Pronunciation](/customizations/pronunciation).","items":{"type":"object","description":"One word and how the voice should say it.","required":["word","say_as"],"properties":{"word":{"type":"string","minLength":1,"maxLength":50,"description":"The word or phrase as it appears in what the agent says. Matching ignores capitalization, and phrases such as `Blue Sky` are replaced as a whole.","example":"HDFC"},"say_as":{"type":"string","minLength":1,"maxLength":100,"description":"How the voice should say it. Write it in the script the voice speaks.","example":"H D F C bank"}}}},{"type":"null","maxItems":100,"description":"This language's word list: words and how this language's voice should say them. The same word can sound different in each language. See [Pronunciation](/customizations/pronunciation).","items":{"type":"object","description":"One word and how the voice should say it.","required":["word","say_as"],"properties":{"word":{"type":"string","minLength":1,"maxLength":50,"description":"The word or phrase as it appears in what the agent says. Matching ignores capitalization, and phrases such as `Blue Sky` are replaced as a whole.","example":"HDFC"},"say_as":{"type":"string","minLength":1,"maxLength":100,"description":"How the voice should say it. Write it in the script the voice speaks.","example":"H D F C bank"}}}}]}}},"system_prompt":{"oneOf":[{"type":"string","description":"Prompt activated while the agent speaks this language. Write it in the language's native script."},{"type":"null","description":"Prompt activated while the agent speaks this language. Write it in the language's native script."}]},"handoff_message":{"oneOf":[{"type":"string","description":"Message played when the agent switches to this language."},{"type":"null","description":"Message played when the agent switches to this language."}]},"agent_name":{"oneOf":[{"type":"string","description":"Agent name used while speaking this language."},{"type":"null","description":"Agent name used while speaking this language."}]},"welcome_message":{"oneOf":[{"type":"string","description":"Welcome message for calls that start in this language. Supports variables. When omitted or blank, `agent_welcome_message` is used. See [Welcome message per language](/customizations/start-call-in-language#welcome-message-per-language).","example":"नमस्ते {{name}}, मैं राज बोल रहा हूँ।"},{"type":"null","description":"Welcome message for calls that start in this language. Supports variables. When omitted or blank, `agent_welcome_message` is used. See [Welcome message per language](/customizations/start-call-in-language#welcome-message-per-language).","example":"नमस्ते {{name}}, मैं राज बोल रहा हूँ।"}]}}},"example":{"en":{"synthesizer":{"provider":"elevenlabs","provider_config":{"voice_id":"21m00Tcm4TlvDq8ikWAM","model":"eleven_turbo_v2_5"}},"system_prompt":"You are a helpful assistant. Keep replies short.","agent_name":"Alex"},"hi":{"transcriber":{"language":"hi"},"synthesizer":{"provider":"sarvam","provider_config":{"voice_id":"suhani","model":"bulbul:v3"}},"system_prompt":"आप एक सहायक एजेंट हैं। हिंदी में संक्षेप में उत्तर दें।","handoff_message":"ठीक है, मैं हिंदी में बात करता हूँ।","agent_name":"राज","welcome_message":"नमस्ते {{name}}, मैं राज बोल रहा हूँ।"}}},"switch_tool_description":{"oneOf":[{"type":"string","description":"Overrides the description of the `switch_language` tool the LLM uses to change languages mid-call.","example":"Switch the conversation language when the caller changes language."},{"type":"null","description":"Overrides the description of the `switch_language` tool the LLM uses to change languages mid-call.","example":"Switch the conversation language when the caller changes language."}]}},"default":null,"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].tools_config.multilingual_config","typeLabel":"object | null"}},"type":"object","required":["llm_agent","synthesizer","transcriber","input","output"],"description":"Configuration of multiple tools that form a task","uniqueKey":"agent_config.tasks.items.[INDEX].tools_config","typeLabel":"object"},"toolchain":{"properties":{"execution":{"type":"string","enum":["parallel","sequential"],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].toolchain.execution","typeLabel":"enum\u003cstring>"},"pipelines":{"type":"array","description":"Array of pipeline stages. Each element is itself an array of stage names, representing one pipeline (e.g. `[[\"transcriber\",\"llm\",\"synthesizer\"]]`).","items":{"type":"array","items":{"type":"string","enum":["transcriber","llm","synthesizer"],"uniqueKey":"agent_config.tasks.items.[INDEX].toolchain.pipelines.items.[INDEX].items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"agent_config.tasks.items.[INDEX].toolchain.pipelines.items.[INDEX]","typeLabel":"enum\u003cstring>[]"},"example":[["transcriber","llm","synthesizer"]],"isRequired":true,"uniqueKey":"agent_config.tasks.items.[INDEX].toolchain.pipelines","typeLabel":"enum\u003cstring>[][]"}},"type":"object","required":["execution","pipelines"],"description":"Agent will execute these tools in the specified order","uniqueKey":"agent_config.tasks.items.[INDEX].toolchain","typeLabel":"object"},"task_config":{"properties":{"hangup_after_silence":{"type":"integer","title":"Hangup After Silence","description":"Time to wait in seconds before hanging up in case user doesn't speak a thing","default":10,"example":10,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.hangup_after_silence","typeLabel":"integer"},"hangup_after_LLMCall":{"type":"boolean","title":"Hangup After Llmcall","description":"Whether to use LLM prompt to hang up or not. Pretty soon this will be replaced by predefined function","default":false,"example":false,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.hangup_after_LLMCall","typeLabel":"boolean"},"incremental_delay":{"type":"integer","title":"Incremental Delay","description":"Since we work with interim results, this will dictate the linear delay to add before speaking everytime we get a partial transcript from ASR","default":400,"example":400,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.incremental_delay","typeLabel":"integer"},"number_of_words_for_interruption":{"type":"integer","title":"Number Of Words For Interruption","description":"To avoid accidental interruption, how many words should we wait for before interrupting","default":2,"example":2,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.number_of_words_for_interruption","typeLabel":"integer"},"call_cancellation_prompt":{"type":"string","title":"Call Cancellation Prompt","example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_cancellation_prompt","typeLabel":"string"},"backchanneling":{"type":"boolean","title":"Backchanneling","description":"This will enable agent to acknowledge when user is speaking long sentences","default":false,"example":false,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.backchanneling","typeLabel":"boolean"},"backchanneling_message_gap":{"type":"integer","title":"Backchanneling Message Gap","description":"Gap between every successive acknowledgement. We will also add a random jitter to this value to make it more random","default":5,"example":5,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.backchanneling_message_gap","typeLabel":"integer"},"backchanneling_start_delay":{"type":"integer","title":"Backchanneling Start Delay","description":"Basic delay after which we should start with backchanneling","default":5,"example":5,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.backchanneling_start_delay","typeLabel":"integer"},"ambient_noise":{"type":"boolean","default":false,"description":"Whether ambient background noise is played during the call. The track is selected using `ambient_noise_track`","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.ambient_noise","typeLabel":"boolean"},"ambient_noise_track":{"type":"string","title":"Ambient Noise Track","description":"ID of the ambient noise track to play during calls. Use a preset track ID (e.g. `coffee-shop`, `office-ambience`, `call-center`) or the ID of a custom track uploaded via `POST /ambient-sounds/custom`. Set to `null` to disable ambient noise. Only supported with Plivo and Vobiz telephony providers.","default":null,"example":"coffee-shop","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.ambient_noise_track","typeLabel":"string"},"call_terminate":{"type":"integer","title":"Terminate a call after specified number of seconds","description":"The call automatically disconnects reaching this limit","default":90,"example":90,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_terminate","typeLabel":"integer"},"inbound_limit":{"type":"integer","default":-1,"description":"Set the number of times each phone number is allowed to call. Put `-1` to allow unlimited calls.","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.inbound_limit","typeLabel":"integer"},"whitelist_phone_numbers":{"type":"array","example":null,"items":{"type":"string","format":"uuid","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.whitelist_phone_numbers.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"Add phone numbers here that should never be restricted by the call limits (ideal for internal or testing numbers). Phone number should have a country code (in [E.164](https://en.wikipedia.org/wiki/E.164) format)","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.whitelist_phone_numbers","typeLabel":"string\u003cuuid>[]"},"disallow_unknown_numbers":{"type":"boolean","default":false,"description":"Only allow incoming calls from the numbers you've sourced using IngestSourceConfig.","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.disallow_unknown_numbers","typeLabel":"boolean"},"dtmf_enabled":{"type":"boolean","default":false,"description":"Allow the agent to accept keypad (DTMF) input during the call. See [DTMF input](/inbound/dtmf)","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.dtmf_enabled","typeLabel":"boolean"},"auto_reschedule":{"type":"boolean","default":false,"description":"Automatically reschedule the call when the user asks to be called back at a later time","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.auto_reschedule","typeLabel":"boolean"},"welcome_message_delay":{"type":"integer","minimum":0,"maximum":1000,"default":0,"example":0,"description":"Delay in milliseconds before the agent plays the welcome message once the call is connected. Accepts a value between `0` and `1000`","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.welcome_message_delay","typeLabel":"integer"},"noise_cancellation_level":{"oneOf":[{"type":"integer","minimum":60,"maximum":100,"default":null,"example":null,"description":"Level of background noise cancellation applied to the call audio. Accepts a value between `60` and `100`. Set to `null` to disable noise cancellation","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.noise_cancellation_level.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":60,"maximum":100,"default":null,"example":null,"description":"Level of background noise cancellation applied to the call audio. Accepts a value between `60` and `100`. Set to `null` to disable noise cancellation","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.noise_cancellation_level.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.noise_cancellation_level","typeLabel":"integer | null"},"call_hangup_message":{"oneOf":[{"type":"string","description":"Final message the agent speaks before disconnecting the call. Accepts a string, or a map of language code to message for multilingual agents (see [multilingual messages](/customizations/auto-switch-multilingual-messages))","example":null,"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_hangup_message.oneOf.0","typeLabel":"string"},{"type":"object","description":"Final message the agent speaks before disconnecting the call. Accepts a string, or a map of language code to message for multilingual agents (see [multilingual messages](/customizations/auto-switch-multilingual-messages))","example":null,"additionalProperties":{"type":"string","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_hangup_message.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_hangup_message.oneOf.1","typeLabel":"object"},{"type":"null","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_hangup_message.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.call_hangup_message","typeLabel":"string | object | null"},"interruptible_hangup_message":{"type":"boolean","default":false,"example":false,"description":"Let the caller interrupt the agent's goodbye when the agent ends the call through the hangup prompt (`hangup_after_LLMCall`). Speaking over the goodbye cancels the hangup and the conversation continues. Silence, call-timeout, transfer and voicemail hangups are never interruptible","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.interruptible_hangup_message","typeLabel":"boolean"},"check_if_user_online":{"type":"boolean","default":true,"description":"Check whether the user is still on the call when they go silent","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.check_if_user_online","typeLabel":"boolean"},"trigger_user_online_message_after":{"type":"integer","default":10,"example":10,"description":"Seconds of user silence after which the agent asks whether the user is still there. Applicable only when `check_if_user_online` is `true`","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.trigger_user_online_message_after","typeLabel":"integer"},"voicemail":{"type":"boolean","default":false,"description":"Enable voicemail detection. Agent will automatically disconnect the call if voicemail is detected","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail","typeLabel":"boolean"},"voicemail_detection_duration":{"type":"number","format":"float","default":30,"example":30,"description":"Time window in seconds from the start of the call during which voicemail detection runs. Applicable only when `voicemail` is `true`","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail_detection_duration","typeLabel":"number\u003cfloat>"},"voicemail_check_interval":{"type":"number","format":"float","default":7,"example":7,"description":"Minimum time in seconds between two successive voicemail detection checks","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail_check_interval","typeLabel":"number\u003cfloat>"},"voicemail_min_transcript_length":{"type":"integer","default":7,"example":7,"description":"Minimum number of words in the transcript before a voicemail detection check is run","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail_min_transcript_length","typeLabel":"integer"},"voicemail_detection_time":{"oneOf":[{"type":"number","format":"float","default":null,"example":null,"description":"Optional override for the voicemail detection timing. Set to `null` to use the default behaviour","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail_detection_time.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","default":null,"example":null,"description":"Optional override for the voicemail detection timing. Set to `null` to use the default behaviour","uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail_detection_time.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_config.tasks.items.[INDEX].task_config.voicemail_detection_time","typeLabel":"number\u003cfloat> | null"}},"type":"object","title":"ConversationConfig","description":"Should be used only in conversation task for now and it consists of all the required configuration for conversational nuances","uniqueKey":"agent_config.tasks.items.[INDEX].task_config","typeLabel":"ConversationConfig · object"}},"type":"object","uniqueKey":"agent_config.tasks.items.[INDEX]","typeLabel":"object"},"type":"array","description":"An array of tasks that the agent can perform","isRequired":true,"uniqueKey":"agent_config.tasks","typeLabel":"object[]"},"agent_welcome_message":{"description":"Initial welcome message by agent. On a multilingual agent, a language's own `welcome_message` replaces it for calls that start in that language.","type":"string","example":"How are you doing Bruce?","uniqueKey":"agent_config.agent_welcome_message","typeLabel":"string"},"webhook_url":{"description":"Webhook URL to receive data for all conversations as [get_execution API](/api-reference/executions/get_execution). Bolna sends webhooks from source IPs `13.203.39.153`, `13.126.9.249` and `13.202.133.53`. Whitelist all three on your server.","type":"string","example":"https://your-server.com/webhook","uniqueKey":"agent_config.webhook_url","typeLabel":"string"},"agent_type":{"description":"Agent type","type":"string","example":"other","uniqueKey":"agent_config.agent_type","typeLabel":"string"},"ingest_source_config":{"type":"object","description":"Configuration for ingestion source used for inbound agents. Required fields vary by `source_type`.","conditionallyRequiredProperties":{"source_url":[{"when":[[{"property":"source_type","values":["api"],"matchesAbsent":true}]]},{"when":[[{"property":"source_type","values":["google_sheet"],"matchesAbsent":true}]]}],"source_auth_token":[{"when":[[{"property":"source_type","values":["api"],"matchesAbsent":true}]]}],"source_name":[{"when":[[{"property":"source_type","values":["csv"],"matchesAbsent":true}]]},{"when":[[{"property":"source_type","values":["google_sheet"],"matchesAbsent":true}]]}]},"properties":{"source_type":{"type":"string","enum":["api","csv","google_sheet"],"description":"Type of CRM ingestion source","example":"api","uniqueKey":"agent_config.ingest_source_config.source_type","typeLabel":"enum\u003cstring>"},"source_url":{"oneOf":[{"type":"string","format":"uri","description":"API or Google Sheet URL","example":"https://example.com/api/data","conditionalRequirements":[{},{}],"uniqueKey":"agent_config.ingest_source_config.source_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"API or Google Sheet URL","example":"https://example.com/api/data","conditionalRequirements":[{},{}],"uniqueKey":"agent_config.ingest_source_config.source_url.oneOf.1","typeLabel":"null"}],"conditionalRequirements":[{},{}],"uniqueKey":"agent_config.ingest_source_config.source_url","typeLabel":"string\u003curi> | null"},"source_auth_token":{"oneOf":[{"type":"string","description":"Bearer token for API authentication","example":"abc123","conditionalRequirements":[{}],"uniqueKey":"agent_config.ingest_source_config.source_auth_token.oneOf.0","typeLabel":"string"},{"type":"null","description":"Bearer token for API authentication","example":"abc123","conditionalRequirements":[{}],"uniqueKey":"agent_config.ingest_source_config.source_auth_token.oneOf.1","typeLabel":"null"}],"conditionalRequirements":[{}],"uniqueKey":"agent_config.ingest_source_config.source_auth_token","typeLabel":"string | null"},"source_name":{"oneOf":[{"type":"string","description":"File or sheet name","example":"leads_sheet_june.csv","conditionalRequirements":[{},{}],"uniqueKey":"agent_config.ingest_source_config.source_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"File or sheet name","example":"leads_sheet_june.csv","conditionalRequirements":[{},{}],"uniqueKey":"agent_config.ingest_source_config.source_name.oneOf.1","typeLabel":"null"}],"conditionalRequirements":[{},{}],"uniqueKey":"agent_config.ingest_source_config.source_name","typeLabel":"string | null"}},"uniqueKey":"agent_config.ingest_source_config","typeLabel":"object"},"calling_guardrails":{"type":"object","description":"Time-based restrictions for outbound calls","properties":{"call_start_hour":{"type":"integer","minimum":0,"maximum":23,"description":"Start of allowed calling window in 24-hour format (recipient's timezone)","example":9,"uniqueKey":"agent_config.calling_guardrails.call_start_hour","typeLabel":"integer"},"call_end_hour":{"type":"integer","minimum":0,"maximum":23,"description":"End of allowed calling window in 24-hour format (recipient's timezone)","example":17,"uniqueKey":"agent_config.calling_guardrails.call_end_hour","typeLabel":"integer"}},"uniqueKey":"agent_config.calling_guardrails","typeLabel":"object"},"call_summary_enabled":{"type":"boolean","default":false,"description":"Runs a platform summary pass after each call. The summary is written to the execution's `summary` field and to `extracted_data` under `General > Call Summary` with only a `subjective` value. Disabled agents produce no call summary.","uniqueKey":"agent_config.call_summary_enabled","typeLabel":"boolean"}},"description":"Configuration of the agent","isRequired":true,"uniqueKey":"agent_config","typeLabel":"object"},"agent_prompts":{"properties":{"task_1":{"type":"object","properties":{"system_prompt":{"description":"The system prompt fed into the agent","type":"string","example":"What is the Ultimate Question of Life, the Universe, and Everything?","isRequired":true,"uniqueKey":"agent_prompts.task_1.system_prompt","typeLabel":"string"}},"required":["system_prompt"],"uniqueKey":"agent_prompts.task_1","typeLabel":"object"}},"type":"object","description":"Prompts to be provided to the agent. It can have multiple tasks of the form `task_\u003ctask_id>`","isRequired":true,"uniqueKey":"agent_prompts","typeLabel":"object"}},"type":"object","required":["agent_config","agent_prompts"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"agent_config":{"agent_name":"Alfred","tasks":[{"task_config":{"hangup_after_silence":10,"hangup_after_LLMCall":false,"incremental_delay":400,"number_of_words_for_interruption":2,"call_cancellation_prompt":null,"backchanneling":false,"backchanneling_message_gap":5,"backchanneling_start_delay":5,"ambient_noise":false,"ambient_noise_track":"coffee-shop","call_terminate":90,"inbound_limit":-1,"whitelist_phone_numbers":null,"disallow_unknown_numbers":false,"dtmf_enabled":false,"auto_reschedule":false,"welcome_message_delay":0,"noise_cancellation_level":null,"call_hangup_message":null,"interruptible_hangup_message":false,"check_if_user_online":true,"trigger_user_online_message_after":10,"voicemail":false,"voicemail_detection_duration":30,"voicemail_check_interval":7,"voicemail_min_transcript_length":7,"voicemail_detection_time":null}}],"agent_welcome_message":"How are you doing Bruce?","webhook_url":"https://your-server.com/webhook","agent_type":"other","ingest_source_config":{"source_type":"api","source_url":"https://example.com/api/data","source_auth_token":"abc123","source_name":"leads_sheet_june.csv"},"calling_guardrails":{"call_start_hour":9,"call_end_hour":17},"call_summary_enabled":false},"agent_prompts":{}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"ae0324fc-d547-46c4-8b43-1b3bd9751e8b":{"description":"Version updated. `version_id` is the id of the new save; use it from now on.","content":{"application/json":{"schema":{"type":"object","properties":{"agent_id":{"type":"string","format":"uuid","uniqueKey":"agent_id","typeLabel":"string\u003cuuid>"},"version_id":{"type":"string","format":"uuid","description":"`id` of the save just written","uniqueKey":"version_id","typeLabel":"string\u003cuuid>"},"version_name":{"type":"string","uniqueKey":"version_name","typeLabel":"string"},"state":{"type":"string","enum":["saved","updated"],"description":"`saved` for a new version, `updated` for a save into an existing version","uniqueKey":"state","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"example":{"agent_id":"123e4567-e89b-12d3-a456-426655440000","version_id":"0b6f4f0e-2f4a-4f4e-9a59-5d0c7f1d2c3b","version_name":"v4","state":"updated"},"examples":{"Example":{"title":"Example","value":{"agent_id":"123e4567-e89b-12d3-a456-426655440000","version_id":"0b6f4f0e-2f4a-4f4e-9a59-5d0c7f1d2c3b","version_name":"v4","state":"updated"}}},"exampleType":"examples"}},"exampleType":"examples"},"242b3d69-162e-46d4-b79a-83f125b767f2":{"description":"The configuration failed validation","content":{"application/json":{"schema":{"required":["error","message"],"type":"object","properties":{"error":{"type":"integer","format":"int32","isRequired":true,"uniqueKey":"error","typeLabel":"integer\u003cint32>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":123,"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"b4cccee2-28d9-451b-9286-ce9fd5e3a32d":{"description":"Agent or version not found","content":{"application/json":{"example":{"message":"Agent version not found"},"examples":{"Example":{"title":"Example","value":{"message":"Agent version not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"a1aa8fe4-a64a-4d9e-a160-3ee3ff145946":{"description":"The version is live (save it with `PUT /v2/agent/{agent_id}` instead), or another save of this agent is in progress","content":{"application/json":{"example":{"message":"This is the live version. Save the agent with PUT /v2/agent/{id} instead."},"examples":{"Example":{"title":"Example","value":{"message":"This is the live version. Save the agent with PUT /v2/agent/{id} instead."}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"d17aec40-840d-45b8-bec6-4ae248cc8988":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"7e49bbbc-65ef-4cd4-bcd9-d0268ba2ca2d":{"url":"https://api.bolna.ai","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yml"},"subdomain":"bolna-54a2d4fe","siteName":"Bolna Docs","title":"Update agent version API - Bolna Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T12:44:45.831Z","originalFileLocation":"api-reference/agent/v2/versions/update.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Save edits into a Bolna voice agent version that isn\u0026#x27;t live, without changing the live agent.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Bolna Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update agent version API - Bolna Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Save edits into a Bolna voice agent version that isn\u0026#x27;t live, without changing the live agent.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Bolna AI Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bolna-54a2d4fe.mintlify.site/docs/_mintlify/api/og/v2?division=Agent+versions\u0026amp;title=Update+agent+version+API\u0026amp;description=Save+edits+into+a+Bolna+voice+agent+version+that+isn%27t+live%2C+without+changing+the+live+agent.\u0026amp;theme=c2a564e4527791006d5cf593\u0026amp;signature=7983472cb1dee11089087200fb2da5df8956c28fab55e9096037952ee8117716\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update agent version API - Bolna Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Save edits into a Bolna voice agent version that isn\u0026#x27;t live, without changing the live agent.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bolna-54a2d4fe.mintlify.site/docs/_mintlify/api/og/v2?division=Agent+versions\u0026amp;title=Update+agent+version+API\u0026amp;description=Save+edits+into+a+Bolna+voice+agent+version+that+isn%27t+live%2C+without+changing+the+live+agent.\u0026amp;theme=c2a564e4527791006d5cf593\u0026amp;signature=7983472cb1dee11089087200fb2da5df8956c28fab55e9096037952ee8117716\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/bolna-54a2d4fe/eeJFp-o5babnY7O-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Bolna Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/agent/v2/versions/update.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.bolna.ai/#organization\",\"name\":\"Bolna AI\",\"legalName\":\"Whismurwave Inc.\",\"url\":\"https://www.bolna.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.bolna.ai/logos/logo-black.png\"},\"sameAs\":[\"https://www.linkedin.com/company/bolna-ai/\",\"https://www.ycombinator.com/companies/bolna-ai\",\"https://github.com/bolna-ai\",\"https://x.com/bolna_dev\",\"https://www.youtube.com/@BolnaVoiceAI\"]},{\"@type\":\"WebSite\",\"@id\":\"https://www.bolna.ai/docs#website\",\"name\":\"Bolna Docs\",\"url\":\"https://www.bolna.ai/docs\",\"publisher\":{\"@id\":\"https://www.bolna.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update#webpage\",\"url\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update\",\"name\":\"Update agent version API\",\"description\":\"Save edits into a Bolna voice agent version that isn't live, without changing the live agent.\",\"dateModified\":\"2026-11-06T12:44:45.831Z\",\"isPartOf\":{\"@id\":\"https://www.bolna.ai/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Voice agents\",\"item\":\"https://www.bolna.ai/docs/api-reference/agent/v2/get\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agent versions\",\"item\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Update agent version API\",\"item\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update#apireference\",\"headline\":\"Update agent version API\",\"name\":\"Update agent version API\",\"description\":\"Save edits into a Bolna voice agent version that isn't live, without changing the live agent.\",\"url\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update\",\"mainEntityOfPage\":{\"@id\":\"https://www.bolna.ai/docs/api-reference/agent/v2/versions/update#webpage\"},\"dateModified\":\"2026-11-06T12:44:45.831Z\",\"publisher\":{\"@id\":\"https://www.bolna.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://www.bolna.ai/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Bolna Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Bolna AI\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/api-reference/agent/v2/versions/update.md","siteName":"Bolna Docs","nav":{"global":null,"tabs":[{"tab":"Overview","icon":"book","pages":[{"title":"Overview","href":""}]},{"tab":"Voice Agents","icon":"waveform-lines","pages":[{"title":"Voice Agents","href":"/agents/overview"}]},{"tab":"Integrations","icon":"plug","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"API Reference","icon":"terminal","groups":[{"group":"Get started","icon":"play","pages":[{"title":"Bolna API documentation","sidebarTitle":"API overview","icon":"code","iconType":"solid","href":"/api-reference/introduction"},{"title":"API authentication","icon":"key","href":"/api-reference/authentication"},{"title":"Pagination for Bolna APIs","sidebarTitle":"Pagination","icon":"ellipsis","iconType":"solid","href":"/api-reference/pagination"},{"title":"Rate limiting for Bolna APIs","sidebarTitle":"Rate limits","icon":"gauge-max","iconType":"solid","href":"/api-reference/rate-limiting"},{"title":"Errors \u0026 status codes","sidebarTitle":"API errors","icon":"triangle-exclamation","href":"/api-reference/errors"},{"title":"Limits \u0026 quotas","sidebarTitle":"Account limits","icon":"gauge","href":"/api-reference/limits"}]},{"group":"Voice agents","icon":"robot","pages":[{"group":"Agents","icon":"robot","root":{"title":"Bolna voice AI agent APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/agent/v2/overview"},"expanded":false,"pages":[{"title":"Retrieve voice AI agent details API","sidebarTitle":"Get agent","openapi":"GET /v2/agent/{agent_id}","href":"/api-reference/agent/v2/get"},{"title":"Create voice AI agent API","sidebarTitle":"Create agent","openapi":"POST /v2/agent","href":"/api-reference/agent/v2/create"},{"title":"Update voice AI agent API","sidebarTitle":"Update agent","openapi":"PUT /v2/agent/{agent_id}","href":"/api-reference/agent/v2/update"},{"title":"Patch update to voice AI agent API","sidebarTitle":"Patch update agent","openapi":"PATCH /v2/agent/{agent_id}","href":"/api-reference/agent/v2/patch_update"},{"title":"Get pronunciation status API","sidebarTitle":"Get pronunciation status","openapi":"GET /v2/agent/{agent_id}/pronunciation-dictionary-status","href":"/api-reference/agent/v2/get_pronunciation_status"},{"title":"List all voice AI agents API","sidebarTitle":"List agents","openapi":"GET /v2/agent/all","href":"/api-reference/agent/v2/get_all"},{"title":"Retrieve voice AI agent execution API","sidebarTitle":"Get agent execution","openapi":"GET /agent/{agent_id}/execution/{execution_id}","href":"/api-reference/agent/v2/get_agent_execution"},{"title":"Delete voice AI agent API","sidebarTitle":"Delete agent","openapi":"DELETE /v2/agent/{agent_id}","href":"/api-reference/agent/v2/delete"},{"title":"Stop agent queued calls API","sidebarTitle":"Stop agent calls","openapi":"POST /v2/agent/{agent_id}/stop","href":"/api-reference/agent/v2/stop"}]},{"group":"Calls","icon":"phone","root":{"title":"Calling APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/calls/overview"},"expanded":false,"pages":[{"title":"Make voice AI call API","sidebarTitle":"Make phone call","openapi":"POST /call","href":"/api-reference/calls/make"},{"title":"Stop a previously initiated voice AI call API","sidebarTitle":"Stop phone call","openapi":"POST /call/{execution_id}/stop","href":"/api-reference/calls/stop_call"}]},{"group":"Executions","icon":"list","root":{"title":"Executions APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/executions/overview"},"expanded":false,"pages":[{"title":"Retrieve voice AI execution API","sidebarTitle":"Get execution","openapi":"GET /executions/{execution_id}","href":"/api-reference/executions/get_execution"},{"title":"Retrieve voice AI execution raw logs API","sidebarTitle":"Get raw logs","openapi":"GET /executions/{execution_id}/log","href":"/api-reference/executions/get_execution_raw_logs"},{"title":"Retrieve voice AI execution debug bundle API","sidebarTitle":"Get debug bundle","openapi":"GET /executions/{execution_id}/debug","href":"/api-reference/executions/get_execution_debug"},{"title":"Get batch executions API","sidebarTitle":"Get batch executions","openapi":"GET /batches/{batch_id}/executions","href":"/api-reference/executions/get_batch_executions"},{"title":"Get all voice AI agent executions API","sidebarTitle":"Get agent executions","openapi":"GET /v2/agent/{agent_id}/executions","href":"/api-reference/executions/get_executions"}]},{"group":"Agent versions","icon":"code-branch","root":{"title":"Agent versions APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/agent/v2/versions/overview"},"expanded":false,"pages":[{"title":"List agent versions API","sidebarTitle":"List versions","openapi":"GET /v2/agent/{agent_id}/versions","href":"/api-reference/agent/v2/versions/list"},{"title":"Get agent version API","sidebarTitle":"Get version","openapi":"GET /v2/agent/{agent_id}/versions/{agent_version_id}","href":"/api-reference/agent/v2/versions/get"},{"title":"Save agent as a new version API","sidebarTitle":"Save as new version","description":"Save a Bolna voice agent configuration as a new version without making it live, to test it before calls use it.","openapi":"POST /v2/agent/{agent_id}/versions","href":"/api-reference/agent/v2/versions/create"},{"title":"Update agent version API","sidebarTitle":"Update version","openapi":"PUT /v2/agent/{agent_id}/versions/{agent_version_id}","href":"/api-reference/agent/v2/versions/update"},{"title":"Rename agent version API","sidebarTitle":"Rename version","description":"Rename a Bolna voice agent version or replace its tags without changing its configuration.","openapi":"PATCH /v2/agent/{agent_id}/versions/{agent_version_id}","href":"/api-reference/agent/v2/versions/patch"},{"title":"Make agent version live API","sidebarTitle":"Make version live","openapi":"POST /v2/agent/{agent_id}/versions/{agent_version_id}/set_current","href":"/api-reference/agent/v2/versions/set_current"},{"title":"Delete agent version API","sidebarTitle":"Delete version","openapi":"DELETE /v2/agent/{agent_id}/versions/{agent_version_id}","href":"/api-reference/agent/v2/versions/delete"}]},{"group":"Batches","icon":"layer-group","root":{"title":"Batch APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/batches/overview"},"expanded":false,"pages":[{"title":"Create batch API","sidebarTitle":"Create batch","openapi":"POST /batches","href":"/api-reference/batches/create"},{"title":"Schedule batch API","sidebarTitle":"Schedule batch","openapi":"POST /batches/{batch_id}/schedule","href":"/api-reference/batches/schedule"},{"title":"Get batch API","sidebarTitle":"Get batch","openapi":"GET /batches/{batch_id}","href":"/api-reference/batches/get_batch"},{"title":"List all batches API","sidebarTitle":"List all batches","openapi":"GET /batches/{agent_id}/all","href":"/api-reference/batches/get_batches"},{"title":"List batch executions API","sidebarTitle":"Batch executions","openapi":"GET /batches/{batch_id}/executions","href":"/api-reference/batches/executions"},{"title":"List batch executions API (v2)","sidebarTitle":"Batch executions (v2)","openapi":"GET /v2/batches/{batch_id}/executions","href":"/api-reference/batches/executions_v2"},{"title":"Stop batch API","sidebarTitle":"Stop batch","openapi":"POST /batches/{batch_id}/stop","href":"/api-reference/batches/stop"},{"title":"Delete batch API","sidebarTitle":"Delete a batch","openapi":"DELETE /batches/{batch_id}","href":"/api-reference/batches/delete"}]},{"group":"Knowledge bases","icon":"book","root":{"title":"Knowledge bases overview","sidebarTitle":"Knowledge bases","icon":"book-open","href":"/api-reference/knowledgebase/overview"},"expanded":false,"pages":[{"title":"Create knowledge base API","sidebarTitle":"Create knowledge base","openapi":"POST /knowledgebase","href":"/api-reference/knowledgebase/create"},{"title":"Get knowledge base API","sidebarTitle":"Get knowledge base","openapi":"GET /knowledgebase/{rag_id}","href":"/api-reference/knowledgebase/get_knowledgebase"},{"title":"List all knowledge bases API","sidebarTitle":"List knowledge bases","openapi":"GET /knowledgebase/all","href":"/api-reference/knowledgebase/get_knowledgebases"},{"title":"Delete knowledge base API","sidebarTitle":"Delete knowledge base","openapi":"DELETE /knowledgebase/{rag_id}","href":"/api-reference/knowledgebase/delete"}]},{"group":"Voices","icon":"microphone-lines","root":{"title":"Voice APIs overview","sidebarTitle":"Overview","icon":"microphone-lines","iconType":"solid","href":"/api-reference/voice/overview"},"expanded":false,"pages":[{"title":"List TTS providers and models","sidebarTitle":"List providers","openapi":"GET /api/v1/voice-config/tts","href":"/api-reference/voice/get_providers"},{"title":"List voices","sidebarTitle":"List voices","openapi":"GET /api/v1/voice-config/tts/voices","href":"/api-reference/voice/get_all"}]},{"group":"Dispositions","icon":"tags","root":{"title":"Dispositions API overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/dispositions/overview"},"expanded":false,"pages":[{"title":"List dispositions API","sidebarTitle":"List dispositions","openapi":"GET /dispositions/","href":"/api-reference/dispositions/list"},{"title":"Get disposition API","sidebarTitle":"Get disposition","openapi":"GET /dispositions/{disposition_id}","href":"/api-reference/dispositions/get"},{"title":"Create disposition API","sidebarTitle":"Create disposition","openapi":"POST /dispositions/","href":"/api-reference/dispositions/create"},{"title":"Bulk create dispositions API","sidebarTitle":"Bulk create","openapi":"POST /dispositions/bulk","href":"/api-reference/dispositions/bulk-create"},{"title":"Update disposition API","sidebarTitle":"Update disposition","openapi":"PUT /dispositions/{disposition_id}","href":"/api-reference/dispositions/update"},{"title":"Delete disposition API","sidebarTitle":"Delete disposition","openapi":"DELETE /dispositions/{disposition_id}","href":"/api-reference/dispositions/delete"},{"title":"Test dispositions API","sidebarTitle":"Test dispositions","openapi":"POST /v2/agent/{agent_id}/dispositions/test","href":"/api-reference/dispositions/test"}]},{"group":"Extraction categories","icon":"filter","root":{"title":"Extraction categories API overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/extraction-categories/overview"},"expanded":false,"pages":[{"title":"List extraction categories API","sidebarTitle":"List categories","openapi":"GET /agent/{agent_id}/extraction-categories","href":"/api-reference/extraction-categories/list"},{"title":"Create extraction category API","sidebarTitle":"Create category","openapi":"POST /agent/{agent_id}/extraction-categories","href":"/api-reference/extraction-categories/create"},{"title":"Update extraction category API","sidebarTitle":"Update category","openapi":"PATCH /extraction-categories/{category_id}","href":"/api-reference/extraction-categories/update"},{"title":"Delete extraction category API","sidebarTitle":"Delete category","openapi":"DELETE /extraction-categories/{category_id}","href":"/api-reference/extraction-categories/delete"}]}]},{"group":"Telephony","icon":"tower-cell","pages":[{"group":"Phone numbers","icon":"hashtag","root":{"title":"Phone numbers APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/phone-numbers/overview"},"expanded":false,"pages":[{"title":"Search phone numbers API ","sidebarTitle":"Search phone numbers","openapi":"GET /phone-numbers/search","href":"/api-reference/phone-numbers/search"},{"title":"Buy phone numbers API ","sidebarTitle":"Buy phone numbers","openapi":"POST /phone-numbers/buy","href":"/api-reference/phone-numbers/buy"},{"title":"List phone numbers API ","sidebarTitle":"List phone numbers","openapi":"GET /phone-numbers/all","href":"/api-reference/phone-numbers/get_all"},{"title":"Move phone number API","sidebarTitle":"Move phone number","openapi":"POST /phone-numbers/move","href":"/api-reference/phone-numbers/move"},{"title":"Delete phone numbers API ","sidebarTitle":"Delete phone numbers","openapi":"DELETE /phone-numbers/{phone_number_id}","href":"/api-reference/phone-numbers/delete"}]},{"group":"Compliance","icon":"file-certificate","root":{"title":"Compliance APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/compliance/overview"},"expanded":false,"pages":[{"title":"List compliance applications API","sidebarTitle":"List applications","openapi":"GET /compliance/list","href":"/api-reference/compliance/list"},{"title":"Create compliance application API","sidebarTitle":"Create application","openapi":"POST /compliance/create","href":"/api-reference/compliance/create"},{"title":"Get compliance application API","sidebarTitle":"Get application","openapi":"GET /compliance/{compliance_id}","href":"/api-reference/compliance/get"},{"title":"Delete compliance application API","sidebarTitle":"Delete application","openapi":"DELETE /compliance/{compliance_id}","href":"/api-reference/compliance/delete"}]},{"group":"Inbound","icon":"phone-arrow-down-left","root":{"title":"Inbound Bolna voice AI agent APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/inbound/overview"},"expanded":false,"pages":[{"title":"Set inbound agent API","sidebarTitle":"Set inbound agent","openapi":"POST /inbound/setup","href":"/api-reference/inbound/agent"},{"title":"Remove inbound agent API","sidebarTitle":"Unlink inbound agent","openapi":"POST /inbound/unlink","href":"/api-reference/inbound/unlink"}]},{"group":"SIP trunks","icon":"network-wired","root":{"title":"SIP trunks API overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/trunks/overview"},"expanded":false,"pages":[{"title":"List SIP trunks API","sidebarTitle":"List trunks","openapi":"GET /trunk/trunks","href":"/api-reference/trunks/list"},{"title":"Create SIP trunk API","sidebarTitle":"Create trunk","openapi":"POST /trunk/trunks","href":"/api-reference/trunks/create"},{"title":"Get SIP trunk API","sidebarTitle":"Get trunk","openapi":"GET /trunk/trunks/{trunk_id}","href":"/api-reference/trunks/get"},{"title":"Update SIP trunk API","sidebarTitle":"Update trunk","openapi":"PATCH /trunk/trunks/{trunk_id}","href":"/api-reference/trunks/update"},{"title":"Delete SIP trunk API","sidebarTitle":"Delete trunk","openapi":"DELETE /trunk/trunks/{trunk_id}","href":"/api-reference/trunks/delete"},{"title":"Add gateway to SIP trunk API","sidebarTitle":"Add gateway","openapi":"POST /trunk/trunks/{trunk_id}/gateways","href":"/api-reference/trunks/add_gateway"},{"title":"Remove gateway from SIP trunk API","sidebarTitle":"Remove gateway","openapi":"DELETE /trunk/trunks/{trunk_id}/gateways/{gateway_id}","href":"/api-reference/trunks/remove_gateway"},{"title":"Add carrier IP to SIP trunk API","sidebarTitle":"Add carrier IP","openapi":"POST /trunk/trunks/{trunk_id}/ip-acls","href":"/api-reference/trunks/add_carrier_ip"},{"title":"Remove carrier IP from SIP trunk API","sidebarTitle":"Remove carrier IP","openapi":"DELETE /trunk/trunks/{trunk_id}/ip-acls/{acl_id}","href":"/api-reference/trunks/remove_carrier_ip"},{"title":"Add number to SIP trunk API","sidebarTitle":"Add number","openapi":"POST /trunk/trunks/{trunk_id}/numbers","href":"/api-reference/trunks/add_number"},{"title":"Remove number from SIP trunk API","sidebarTitle":"Remove number","openapi":"DELETE /trunk/trunks/{trunk_id}/numbers/{number_id}","href":"/api-reference/trunks/remove_number"},{"title":"Assign agent to SIP trunk number API","sidebarTitle":"Assign agent","openapi":"PATCH /trunk/numbers/{number_id}","href":"/api-reference/trunks/assign_agent"},{"title":"List SIP trunk calls API","sidebarTitle":"List calls","openapi":"GET /trunk/trunks/{trunk_id}/calls","href":"/api-reference/trunks/list_calls"},{"title":"Get SIP trunk connection details API","sidebarTitle":"Connection details","openapi":"GET /trunk/pop","href":"/api-reference/trunks/connection_details"}]},{"group":"SIP trunks (legacy)","icon":"box-archive","root":{"title":"SIP trunk API reference","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/sip-trunks/overview"},"expanded":false,"pages":[{"title":"Create SIP trunk","sidebarTitle":"Create trunk","openapi":"POST /sip-trunks/trunks","href":"/api-reference/sip-trunks/create"},{"title":"List SIP trunks","sidebarTitle":"List trunks","openapi":"GET /sip-trunks/trunks","href":"/api-reference/sip-trunks/get_all"},{"title":"Get SIP trunk","sidebarTitle":"Get trunk","openapi":"GET /sip-trunks/trunks/{trunk_id}","href":"/api-reference/sip-trunks/get"},{"title":"Update SIP trunk","sidebarTitle":"Update trunk","openapi":"PATCH /sip-trunks/trunks/{trunk_id}","href":"/api-reference/sip-trunks/update"},{"title":"Delete SIP trunk","sidebarTitle":"Delete trunk","openapi":"DELETE /sip-trunks/trunks/{trunk_id}","href":"/api-reference/sip-trunks/delete"},{"title":"Add phone number to trunk","sidebarTitle":"Add number","openapi":"POST /sip-trunks/trunks/{trunk_id}/numbers","href":"/api-reference/sip-trunks/add_number"},{"title":"List phone numbers on trunk","sidebarTitle":"List numbers","openapi":"GET /sip-trunks/trunks/{trunk_id}/numbers","href":"/api-reference/sip-trunks/list_numbers"},{"title":"Remove phone number from trunk","sidebarTitle":"Remove number","openapi":"DELETE /sip-trunks/trunks/{trunk_id}/numbers/{phone_number_id}","href":"/api-reference/sip-trunks/remove_number"}]},{"group":"Violations","icon":"ban","root":{"title":"Violations APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/violations/overview"},"expanded":false,"pages":[{"title":"List violations API","sidebarTitle":"List violations","openapi":"GET /violations/list","href":"/api-reference/violations/list"},{"title":"Submit violation API","sidebarTitle":"Submit violation","openapi":"POST /violations/submit","href":"/api-reference/violations/submit"}]}]},{"group":"Workflows","icon":"diagram-project","pages":[{"group":"Workflows","icon":"diagram-project","root":{"title":"Workflow APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/workflows/overview"},"expanded":false,"pages":[{"title":"Create workflow API","sidebarTitle":"Create workflow","openapi":"POST /workflows","href":"/api-reference/workflows/create"},{"title":"List workflows API","sidebarTitle":"List workflows","openapi":"GET /workflows","href":"/api-reference/workflows/list"},{"title":"Get workflow API","sidebarTitle":"Get workflow","openapi":"GET /workflows/{workflow_id}","href":"/api-reference/workflows/get"},{"title":"Update workflow API","sidebarTitle":"Update workflow","openapi":"PATCH /workflows/{workflow_id}","href":"/api-reference/workflows/update"},{"title":"Delete workflow API","sidebarTitle":"Delete workflow","openapi":"DELETE /workflows/{workflow_id}","href":"/api-reference/workflows/delete"},{"title":"Get workflow draft API","sidebarTitle":"Get draft","openapi":"GET /workflows/{workflow_id}/draft","href":"/api-reference/workflows/get-draft"},{"title":"Save workflow draft API","sidebarTitle":"Save draft","openapi":"PUT /workflows/{workflow_id}/draft","href":"/api-reference/workflows/save-draft"},{"title":"Validate workflow API","sidebarTitle":"Validate draft","openapi":"POST /workflows/{workflow_id}/validate","href":"/api-reference/workflows/validate"},{"title":"Publish workflow API","sidebarTitle":"Publish","openapi":"POST /workflows/{workflow_id}/publish","href":"/api-reference/workflows/publish"},{"title":"Get workflow version API","sidebarTitle":"Get published version","openapi":"GET /workflows/{workflow_id}/versions/{version}","href":"/api-reference/workflows/get-version"},{"title":"Run workflow API","sidebarTitle":"Run one contact","openapi":"POST /workflows/{workflow_id}/run","href":"/api-reference/workflows/run"},{"title":"Test workflow webhook API","sidebarTitle":"Test webhook","openapi":"POST /workflows/{workflow_id}/webhook:test","href":"/api-reference/workflow-webhooks/test"},{"title":"Get callback URL API","sidebarTitle":"Get callback URL","openapi":"GET /workflows/{workflow_id}/nodes/{node_id}/callback","href":"/api-reference/workflows/get-callback"},{"title":"Rotate callback URL API","sidebarTitle":"Rotate callback URL","openapi":"POST /workflows/{workflow_id}/nodes/{node_id}/callback:rotate","href":"/api-reference/workflows/rotate-callback"},{"title":"Get last callback API","sidebarTitle":"Get last callback","openapi":"GET /workflows/{workflow_id}/nodes/{node_id}/callback:last","href":"/api-reference/workflows/get-last-callback"},{"title":"Workflow node types API","sidebarTitle":"Node-type catalog","openapi":"GET /workflow-node-types","href":"/api-reference/workflows/node-types"}]},{"group":"Campaigns","icon":"bullhorn","root":{"title":"Workflow campaign APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/workflow-campaigns/overview"},"expanded":false,"pages":[{"title":"Create workflow campaign API","sidebarTitle":"Create campaign","openapi":"POST /workflow-campaigns","href":"/api-reference/workflow-campaigns/create"},{"title":"List workflow campaigns API","sidebarTitle":"List campaigns","openapi":"GET /workflow-campaigns","href":"/api-reference/workflow-campaigns/list"},{"title":"Get workflow campaign API","sidebarTitle":"Get campaign","openapi":"GET /workflow-campaigns/{campaign_id}","href":"/api-reference/workflow-campaigns/get"},{"title":"Upload campaign entries API","sidebarTitle":"Upload entries","openapi":"POST /workflow-campaigns/{campaign_id}/entries","href":"/api-reference/workflow-campaigns/upload-entries"},{"title":"List campaign entries API","sidebarTitle":"List entries","openapi":"GET /workflow-campaigns/{campaign_id}/entries","href":"/api-reference/workflow-campaigns/list-entries"},{"title":"Campaign entries template API","sidebarTitle":"CSV template","openapi":"GET /workflow-campaigns/{campaign_id}/entries/template","href":"/api-reference/workflow-campaigns/entries-template"},{"title":"Start workflow campaign API","sidebarTitle":"Start campaign","openapi":"POST /workflow-campaigns/{campaign_id}:start","href":"/api-reference/workflow-campaigns/start"},{"title":"Pause workflow campaign API","sidebarTitle":"Pause campaign","openapi":"POST /workflow-campaigns/{campaign_id}:pause","href":"/api-reference/workflow-campaigns/pause"},{"title":"Resume workflow campaign API","sidebarTitle":"Resume campaign","openapi":"POST /workflow-campaigns/{campaign_id}:resume","href":"/api-reference/workflow-campaigns/resume"},{"title":"Abort workflow campaign API","sidebarTitle":"Abort campaign","openapi":"POST /workflow-campaigns/{campaign_id}:abort","href":"/api-reference/workflow-campaigns/abort"},{"title":"List campaign executions API","sidebarTitle":"List executions","openapi":"GET /workflow-campaigns/{campaign_id}/executions","href":"/api-reference/workflow-campaigns/list-executions"},{"title":"Workflow campaign report API","sidebarTitle":"Campaign report","openapi":"GET /workflow-campaigns/{campaign_id}/report","href":"/api-reference/workflow-campaigns/report"},{"title":"Delete workflow campaign API","sidebarTitle":"Delete campaign","openapi":"DELETE /workflow-campaigns/{campaign_id}","href":"/api-reference/workflow-campaigns/delete"}]},{"group":"Executions","icon":"list","root":{"title":"Workflow execution APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/workflow-executions/overview"},"expanded":false,"pages":[{"title":"Get workflow execution API","sidebarTitle":"Get execution","openapi":"GET /workflow-executions/{execution_id}","href":"/api-reference/workflow-executions/get"},{"title":"Cancel workflow execution API","sidebarTitle":"Cancel execution","openapi":"POST /workflow-executions/{execution_id}:cancel","href":"/api-reference/workflow-executions/cancel"},{"title":"Resend execution webhook API","sidebarTitle":"Resend webhook","openapi":"POST /workflow-executions/{execution_id}/webhook:resend","href":"/api-reference/workflow-webhooks/resend"}]}]},{"group":"Account","icon":"user-gear","pages":[{"group":"User","icon":"user","root":{"title":"User APIs overview","sidebarTitle":"User APIs overview","icon":"book-open","href":"/api-reference/user/overview"},"expanded":false,"pages":[{"title":"User information","sidebarTitle":"Get user details","openapi":"GET /user/me","href":"/api-reference/user/info"},{"title":"Add a new custom LLM model","sidebarTitle":"Add a custom model","openapi":"POST /user/model/custom","href":"/api-reference/user/add_model"},{"title":"List your custom LLM models","sidebarTitle":"List custom models","openapi":"GET /user/model/custom","href":"/api-reference/user/list_custom_models"},{"title":"Delete a custom LLM model","sidebarTitle":"Delete custom model","openapi":"DELETE /user/model/custom/{model_id}","href":"/api-reference/user/delete_model"},{"title":"Add a custom TTS voice","sidebarTitle":"Add a custom TTS","openapi":"POST /user/tts/custom","href":"/api-reference/user/add_custom_tts"},{"title":"List your custom TTS voices","sidebarTitle":"List custom TTS","openapi":"GET /user/tts/custom","href":"/api-reference/user/list_custom_tts"},{"title":"Delete a custom TTS voice","sidebarTitle":"Delete custom TTS","openapi":"DELETE /user/tts/custom/{custom_tts_id}","href":"/api-reference/user/delete_custom_tts"}]},{"group":"Providers","icon":"plug","root":{"title":"Providers APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/providers/overview"},"expanded":false,"pages":[{"title":"Add a new provider API","sidebarTitle":"Add a new provider","openapi":"POST /providers","href":"/api-reference/providers/add"},{"title":"List providers API ","sidebarTitle":"List providers","openapi":"GET /providers","href":"/api-reference/providers/get"},{"title":"Remove a provider API","sidebarTitle":"Remove a provider","openapi":"DELETE /providers/{provider_key_name}","href":"/api-reference/providers/remove"}]},{"group":"Sub-accounts","icon":"sitemap","root":{"title":"Sub accounts APIs overview","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/sub-accounts/overview"},"expanded":false,"pages":[{"title":"Create a new sub-account API","sidebarTitle":"Create sub-account","openapi":"POST /sub-accounts/create","href":"/api-reference/sub-accounts/create"},{"title":"List all sub-accounts API","sidebarTitle":"List sub-accounts","openapi":"GET /sub-accounts/all","href":"/api-reference/sub-accounts/get_all"},{"title":"Patch update a sub-account","sidebarTitle":"Patch sub-account","openapi":"PATCH /sub-accounts/{sub_account_id}","href":"/api-reference/sub-accounts/patch_update"},{"title":"Track sub-account usage API","sidebarTitle":"Sub-account usage","openapi":"GET /sub-accounts/{sub_account_id}/usage","href":"/api-reference/sub-accounts/usage"},{"title":"Get all sub-accounts usage API","sidebarTitle":"All sub-account usage","openapi":"GET /sub-accounts/all/usage","href":"/api-reference/sub-accounts/all_usage"},{"title":"Deleting a sub-account","sidebarTitle":"Delete sub-account","openapi":"DELETE /sub-accounts/{sub_account_id}","href":"/api-reference/sub-accounts/delete"}]}]},{"group":"Legacy","icon":"box-archive","pages":[{"group":"Agent v1","icon":"box-archive","root":{"title":"Bolna voice AI agent APIs overview (deprecated)","sidebarTitle":"Overview","icon":"book-open","href":"/api-reference/agent/overview"},"expanded":false,"pages":[{"title":"Create voice AI agent API (deprecated)","sidebarTitle":"Create agent","openapi":"POST /agent","href":"/api-reference/agent/create"},{"title":"Retrieve voice AI agent details API (deprecated)","sidebarTitle":"Get agent","openapi":"GET /agent/{agent_id}","href":"/api-reference/agent/get"},{"title":"Update voice AI agent API (deprecated)","sidebarTitle":"Update agent","openapi":"PUT /agent/{agent_id}","href":"/api-reference/agent/update"},{"title":"Patch update to voice AI agent API (deprecated)","sidebarTitle":"Patch update agent","openapi":"PATCH /agent/{agent_id}","href":"/api-reference/agent/patch_update"},{"title":"List all voice AI agents API (deprecated)","sidebarTitle":"List agents","openapi":"GET /agent/all","href":"/api-reference/agent/get_all"},{"title":"Get all agent executions API (v1, deprecated)","sidebarTitle":"Get all executions","openapi":"GET /agent/{agent_id}/executions","href":"/api-reference/agent/get_all_agent_executions"}]}]}]},{"tab":"Developers","icon":"toolbox","pages":[{"title":"Developers","href":"/developer-resources/overview"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog/november-2026"}]}]},"basePath":"","title":"Update agent version API - Bolna Docs","buildId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","deploymentId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-CQGbdtm4.js","utils-D88A1f-Z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChqWdz1A.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-yBrxdh_6.js","snippetPresets-BgqDrFJC.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-C2-BijcO.js","ApiExamples-Duxc2rZw.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C7jidOil.js","shallow-xkjpHm-U.js","getApiPlaygroundDisplay-fE3rVpvL.js","CodeSnippet-LgxljKed.js","CodeSnippets-D-pXWDHq.js","getPastedJson-CLRcu-uo.js","icon-Cxirpjgo.js","MethodPill-D49eqY5e.js","DuplicateIcon-CivCz5Rp.js","createIcon-D71qL3f5.js","DynamicMarkdown-BcGRTrw6.js","SectionHeading-DzaqmmSD.js","axios-vUo_bRtp.js","Markdown-CZqUYmMp.js","clsx-B6IZIRsp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-B0ZV6X5T.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-MqLyPtsW.js"]}