Although this is a PUT, the update merges. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (llm, stt, tts) merge the same way, so {"tts": {"provider_id": "…", "voice_id": "…"}} changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it.
llm.graph_data is the exception: it is not merged. A sent graph_data replaces the stored graph as a whole.
Changing the LLM, STT model or voice
Selections use the same id-based contract as Create AI Agent:
Send stt.provider_id + stt.model_id or tts.provider_id + tts.voice_id. The reference is resolved again against the provider catalog, and the stored names are refreshed.
Send llm.llm_id, or graph_data.agentDefaults.llm.llm_id for a flow agent. The LLM fields on the agent are refreshed from the model catalog.
Flow agents
To change a flow agent’s default STT model, LLM or voice, send llm.llm_type: "flow" and the completellm.graph_data with the new ids in agentDefaults. A partial graph replaces the stored one. See the flow_graph request example.
graph_data without llm.llm_type returns 422.
The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns 422 with the graph path in error_details, for example llm.graph_data.agentDefaults.tts.voice_id.
Root stt and tts are not used by flow agents.
The same 422 checks as create apply: the referenced record must exist, be ACTIVE, support the agent’s llm_type and, for a custom model, belong to your organization.
Rejected LLM fields
llm.model_provider, llm.model_name and llm.model_display_name are not accepted. The model is chosen by llm.llm_id alone, and those fields are always refilled from the catalog. A request that sends any of them returns 400, and every offending field is named in error_details:
{ "status": "error", "message": "Agent validation failed", "error_details": { "llm.model_name": "llm.model_name is not accepted on v3 update; send llm.llm_id to change the model" }}
Get AI Agent returns those three fields inside data.llm. A client that reads an agent and sends the same llm object back gets this 400. Remove the three fields, or send only the fields you change.
Field notes
model_temperature: when omitted, the stored value is kept, even when llm_id changes. The new model’s temperature applies only if the agent had none. A sent value, 0 included, is stored as is.
vad_activation_threshold: omitting the key keeps the stored value. A number from 0.10 to 0.90 replaces it.
wait_time_before_detecting_end_of_speech and max_endpointing_delay apply to flow agents only. When a request changes either one, max_endpointing_delay must stay greater than the wait time after the merge, otherwise the request returns 422.
Sending vad_activation_threshold: null does not clear the stored value yet. The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one.
Versioning
Every successful update writes a new agent version. The response carries current_version and, when the version has a label, current_version_name.
Response envelope
Every v3 response uses the same envelope:
Field
Meaning
status
success or error. Always lowercase.
message
A human-readable summary.
data
The result. Absent on errors.
error_details
A map from field path to message. Present only on some errors.
Fields with no value are omitted rather than returned as null.
The response message and operation_type depend on the agent type: Simple agent updated successfully / UPDATE, Flow builder agent updated successfully / UPDATE_FLOW_BUILDER, or Agentic agent updated successfully / UPDATE_AGENTIC.
Status codes
Code
When
200
Updated. The body carries the full agent.
400
The request sent llm.model_provider, llm.model_name or llm.model_display_name.
403
The agent belongs to another organization or workspace.
404
No such agent.
422
Validation failed, or a referenced catalog record was missing, inactive or incompatible.
PUT
/
v3
/
ai-agents
/
{agent_id}
curl --request PUT \ --url https://api.example.com/v3/ai-agents/{agent_id} \ --header 'Content-Type: application/json' \ --data '{ "agent_name": "Tier-1 Support Agent"}'
{ "status": "success", "message": "Simple agent updated successfully", "data": { "ai_agent_id": "3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42", "agent_name": "Customer Support Agent", "agent_status": "ACTIVE", "language_code": "en-US", "llm": { "llm_id": "9d259647-d5ec-423d-96a9-2750980e8ecb", "llm_type": "simple", "model_provider": "openai", "model_name": "gpt-4o-mini", "model_display_name": "GPT-4o mini", "model_temperature": 0.1, "max_tokens": 4096, "system_prompt": "You are a helpful customer support assistant." }, "stt": { "provider_id": "6a5c45808d2d94e9d0e255d3", "provider": "deepgram", "model_id": "af97a5f7-0f10-4eb3-a915-f7fe95a050f8", "model": "nova-3-general" }, "tts": { "provider_id": "6a5c079f814b8ed08b15172b", "provider": "elevenlabs", "voice_id": "IKne3meq5aSn9XLyUdCD", "voice_name": "Charlie", "model_name": "eleven_flash_v2_5", "voice_temperature": 1 }, "speech_speed": 0.9, "vad_activation_threshold": 0.4, "knowledge_base_id": "kb-123456", "enable_user_interruptions": true, "minimum_speech_duration_for_interruptions": 0.5, "minimum_words_before_interruption": 2, "interruption_mode": "vad", "ambient_sound": "office", "ambient_sound_volume": 1, "webhook_url": "https://api.example.com/webhooks/call-events", "end_call_after_silence_seconds": 20, "max_call_duration_seconds": 600, "welcome_message": "Hello! Thanks for calling. How can I help you today?", "end_call_instruction": "End the call politely once the issue is resolved.", "amd_voicemail_message": "Sorry we missed you. Please call us back.", "voicemail_detection_timeout_seconds": 5, "agent_ended_call_delay_seconds": 1, "welcome_message_delay_in_seconds": 0.5, "enable_amd": true, "silence_reminder_enabled": true, "silence_reminder_duration_seconds": 15, "max_number_of_silence_reminders": 3, "interval_between_silence_reminders_seconds": 10, "enable_noise_cancellation": true, "dynamic_data_config": [ { "name": "customer_data", "url": "https://api.example.com/customer-data", "method": "GET", "timeout": 2000, "cache": true, "response_data": [ { "name": "customer_name", "data": "$.customer.name", "context": "Customer's full name for personalization" } ] } ], "post_call_analysis": [ { "type": "string", "name": "call_summary", "description": "A brief summary of the call and key points.", "examples": [ "Customer asked about billing; issue resolved." ] } ], "pronunciations": [ { "id": "r1", "term": "API", "replacement": "ay pee eye" } ], "organization_id": "org_7f3a9c", "agent_owner_id": "usr_12ab34", "created_by_user_id": "usr_12ab34", "created_at": "2026-10-15T09:30:12.481Z", "modified_at": "2026-10-15T10:02:47.115Z", "current_version": 2, "operation_type": "UPDATE" }}
Canonical IANA time zone the agent reads its clock in, e.g. 'Asia/Tokyo'. Rejected if it is not a tzdb name: abbreviations (JST), UTC offsets (+09:00) and city-only strings (Tokyo) are not accepted. Omitted or null leaves the agent without a timezone; there is no default.
Voice activity detection sensitivity, 0.10–0.90. There is no service-side default: when unset, the call handler uses its own per-language default, and the key is omitted from create, get and update responses. On update, omitting the key keeps the stored value.
Seconds of silence before the caller's turn is treated as finished. Flow agents only: when omitted on create, a flow agent gets 0.2. Other agent types ignore the value: create stores nothing and update keeps whatever was stored.
Upper bound, in seconds, on how long end-of-speech detection may wait. Flow agents only: when omitted on create, a flow agent gets 2.0. It must be greater than wait_time_before_detecting_end_of_speech, otherwise the request returns 422. Other agent types ignore the value.
Analysis items to extract from the call after it ends. The type of each item sets the shape of its result. You can also manage these items with the post-call analysis API.
Show child attributes
Example:
[ { "type": "string", "name": "call_summary", "description": "A short summary of the call.", "system_prompt": "Summarize the call in two sentences.", "examples": [ "The caller asked about a late delivery and was given a new date." ] }, { "type": "enum", "name": "customer_sentiment", "description": "Overall sentiment of the caller.", "system_prompt": "Classify the caller's overall sentiment.", "choices": ["positive", "neutral", "negative"] } ]
Changes to the language model configuration. Omitted fields keep their stored values. Send llm_id to change the model; model_provider, model_name and model_display_name return 400.
Field path to message, for validation failures. Omitted when there are none.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Verbex Docs","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/hishabsingaporepteltd/hKDJJlbuwj-_7GRI/light.png?fit=max\u0026auto=format\u0026n=hKDJJlbuwj-_7GRI\u0026q=85\u0026s=8e51283f8c4e5daa2b06e4c7b010036a","dark":"https://mintcdn.com/hishabsingaporepteltd/Bd-nkhA8cT0nKgAS/dark.png?fit=max\u0026auto=format\u0026n=Bd-nkhA8cT0nKgAS\u0026q=85\u0026s=c7eab5a32b4f7a91d7d0a702fa7aa1d1"},"favicon":"https://mintcdn.com/hishabsingaporepteltd/Bd-nkhA8cT0nKgAS/favicon.png?fit=max\u0026auto=format\u0026n=Bd-nkhA8cT0nKgAS\u0026q=85\u0026s=b848ae01a88c70cb541c5bf4ba708435","navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://console.verbex.ai/dashboard"}},"footer":{"socials":{"discord":"https://discord.gg/9c6b2GAq5t","youtube":"https://www.youtube.com/@verbexadmin","facebook":"https://web.facebook.com/hishabltd","linkedin":"https://www.linkedin.com/company/hishab"}},"fonts":{"heading":{"family":"Poppins-Thin 100"},"body":{"family":"Poppins-Thin 100"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hishabsingaporepteltd","hasAudioNarration":false,"actualSubdomain":"hishabsingaporepteltd","customDomains":["docs.verbex.ai"],"gitSource":{"type":"github","owner":"verbex-ai","repo":"verbex-platform-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac4dccaa04ae9340921a186","collectionId":"0c147a9b-11cc-45fe-a0a7-0361e52421ef","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac4dccaa04ae9340921a186"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae7c703706f6ab40243f401","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":74},{"language":"default","tag":"Documentation","count":39},{"language":"default","tag":"Build Your AI Agent - Step by Step","count":24},{"language":"default","tag":"Knowledge Bases","count":13},{"language":"default","tag":" Connect Tools","count":11},{"language":"default","tag":"Webhook Subscriptions","count":6},{"language":"default","tag":" Create Your AI Agent","count":5},{"language":"default","tag":" Configure Your AI Agent","count":5},{"language":"default","tag":"AI Agents v2","count":5},{"language":"default","tag":"AI Agents v3","count":5}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","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":"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":"llms-txt-v2","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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/ai-agents-v3/update-ai-agent","slug":"/api-reference/ai-agents-v3/update-ai-agent","pageMetadata":{"title":"Update AI Agent","description":"Update an agent and return the full updated agent.\n\n\u003cWarning>\n**The v2 equivalent, [`PUT /v2/ai-agents/{agent_id}`](/api-reference/ai-agents-v2/update-ai-agent), is deprecated and stops working on November 30, 2026.** This is the v3 endpoint. [Migrate from v2 to v3](/api-reference/ai-agents-v3/migrate-from-v2) before that date.\n\u003c/Warning>\n\n## Partial updates\n\nAlthough this is a `PUT`, the update **merges**. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (`llm`, `stt`, `tts`) merge the same way, so `{\"tts\": {\"provider_id\": \"…\", \"voice_id\": \"…\"}}` changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it.\n\n`llm.graph_data` is the exception: it is not merged. A sent `graph_data` replaces the stored graph as a whole.\n\n## Changing the LLM, STT model or voice\n\nSelections use the same id-based contract as [Create AI Agent](/api-reference/ai-agents-v3/create-ai-agent):\n\n- Send `stt.provider_id` + `stt.model_id` or `tts.provider_id` + `tts.voice_id`. The reference is resolved again against the provider catalog, and the stored names are refreshed.\n- Send `llm.llm_id`, or `graph_data.agentDefaults.llm.llm_id` for a `flow` agent. The LLM fields on the agent are refreshed from the model catalog.\n\n## Flow agents\n\n- To change a flow agent's default STT model, LLM or voice, send `llm.llm_type: \"flow\"` and the **complete** `llm.graph_data` with the new ids in `agentDefaults`. A partial graph replaces the stored one. See the `flow_graph` request example.\n- `graph_data` without `llm.llm_type` returns `422`.\n- The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns `422` with the graph path in `error_details`, for example `llm.graph_data.agentDefaults.tts.voice_id`.\n- Root `stt` and `tts` are not used by flow agents.\n\nThe same `422` checks as create apply: the referenced record must exist, be `ACTIVE`, support the agent's `llm_type` and, for a custom model, belong to your organization.\n\n## Rejected LLM fields\n\n`llm.model_provider`, `llm.model_name` and `llm.model_display_name` are not accepted. The model is chosen by `llm.llm_id` alone, and those fields are always refilled from the catalog. A request that sends any of them returns `400`, and every offending field is named in `error_details`:\n\n```json\n{\n \"status\": \"error\",\n \"message\": \"Agent validation failed\",\n \"error_details\": {\n \"llm.model_name\": \"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\"\n }\n}\n```\n\n\u003cWarning>\n[Get AI Agent](/api-reference/ai-agents-v3/get-ai-agent) returns those three fields inside `data.llm`. A client that reads an agent and sends the same `llm` object back gets this `400`. Remove the three fields, or send only the fields you change.\n\u003c/Warning>\n\n## Field notes\n\n- `model_temperature`: when omitted, the stored value is kept, **even when `llm_id` changes**. The new model's temperature applies only if the agent had none. A sent value, `0` included, is stored as is.\n- `vad_activation_threshold`: omitting the key keeps the stored value. A number from `0.10` to `0.90` replaces it.\n- `wait_time_before_detecting_end_of_speech` and `max_endpointing_delay` apply to `flow` agents only. When a request changes either one, `max_endpointing_delay` must stay greater than the wait time after the merge, otherwise the request returns `422`.\n\n\u003cWarning>\n**Sending `vad_activation_threshold: null` does not clear the stored value yet.** The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one.\n\u003c/Warning>\n\n## Versioning\n\nEvery successful update writes a new agent version. The response carries `current_version` and, when the version has a label, `current_version_name`.\n\n## Response envelope\n\nEvery v3 response uses the same envelope:\n\n| Field | Meaning |\n| --- | --- |\n| `status` | `success` or `error`. Always lowercase. |\n| `message` | A human-readable summary. |\n| `data` | The result. Absent on errors. |\n| `error_details` | A map from field path to message. Present only on some errors. |\n\nFields with no value are omitted rather than returned as `null`.\n\nThe response message and `operation_type` depend on the agent type: `Simple agent updated successfully` / `UPDATE`, `Flow builder agent updated successfully` / `UPDATE_FLOW_BUILDER`, or `Agentic agent updated successfully` / `UPDATE_AGENTIC`.\n\n## Status codes\n\n| Code | When |\n| --- | --- |\n| `200` | Updated. The body carries the full agent. |\n| `400` | The request sent `llm.model_provider`, `llm.model_name` or `llm.model_display_name`. |\n| `403` | The agent belongs to another organization or workspace. |\n| `404` | No such agent. |\n| `422` | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v3/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v3/update-ai-agent","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n h2: \"h2\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n strong: \"strong\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock, Warning} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n if (!Warning) _missingMdxReference(\"Warning\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Update an agent and return the full updated agent.\"\n }), \"\\n\", _jsx(Warning, {\n children: _jsxs(_components.p, {\n children: [_jsxs(_components.strong, {\n children: [\"The v2 equivalent, \", _jsx(_components.a, {\n href: \"/api-reference/ai-agents-v2/update-ai-agent\",\n children: _jsx(_components.code, {\n children: \"PUT /v2/ai-agents/{agent_id}\"\n })\n }), \", is deprecated and stops working on November 30, 2026.\"]\n }), \" This is the v3 endpoint. \", _jsx(_components.a, {\n href: \"/api-reference/ai-agents-v3/migrate-from-v2\",\n children: \"Migrate from v2 to v3\"\n }), \" before that date.\"]\n })\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Partial updates\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Although this is a \", _jsx(_components.code, {\n children: \"PUT\"\n }), \", the update \", _jsx(_components.strong, {\n children: \"merges\"\n }), \". Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (\", _jsx(_components.code, {\n children: \"llm\"\n }), \", \", _jsx(_components.code, {\n children: \"stt\"\n }), \", \", _jsx(_components.code, {\n children: \"tts\"\n }), \") merge the same way, so \", _jsx(_components.code, {\n children: \"{\\\"tts\\\": {\\\"provider_id\\\": \\\"…\\\", \\\"voice_id\\\": \\\"…\\\"}}\"\n }), \" changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"llm.graph_data\"\n }), \" is the exception: it is not merged. A sent \", _jsx(_components.code, {\n children: \"graph_data\"\n }), \" replaces the stored graph as a whole.\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Changing the LLM, STT model or voice\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Selections use the same id-based contract as \", _jsx(_components.a, {\n href: \"/api-reference/ai-agents-v3/create-ai-agent\",\n children: \"Create AI Agent\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Send \", _jsx(_components.code, {\n children: \"stt.provider_id\"\n }), \" + \", _jsx(_components.code, {\n children: \"stt.model_id\"\n }), \" or \", _jsx(_components.code, {\n children: \"tts.provider_id\"\n }), \" + \", _jsx(_components.code, {\n children: \"tts.voice_id\"\n }), \". The reference is resolved again against the provider catalog, and the stored names are refreshed.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Send \", _jsx(_components.code, {\n children: \"llm.llm_id\"\n }), \", or \", _jsx(_components.code, {\n children: \"graph_data.agentDefaults.llm.llm_id\"\n }), \" for a \", _jsx(_components.code, {\n children: \"flow\"\n }), \" agent. The LLM fields on the agent are refreshed from the model catalog.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Flow agents\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"To change a flow agent’s default STT model, LLM or voice, send \", _jsx(_components.code, {\n children: \"llm.llm_type: \\\"flow\\\"\"\n }), \" and the \", _jsx(_components.strong, {\n children: \"complete\"\n }), \" \", _jsx(_components.code, {\n children: \"llm.graph_data\"\n }), \" with the new ids in \", _jsx(_components.code, {\n children: \"agentDefaults\"\n }), \". A partial graph replaces the stored one. See the \", _jsx(_components.code, {\n children: \"flow_graph\"\n }), \" request example.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"graph_data\"\n }), \" without \", _jsx(_components.code, {\n children: \"llm.llm_type\"\n }), \" returns \", _jsx(_components.code, {\n children: \"422\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns \", _jsx(_components.code, {\n children: \"422\"\n }), \" with the graph path in \", _jsx(_components.code, {\n children: \"error_details\"\n }), \", for example \", _jsx(_components.code, {\n children: \"llm.graph_data.agentDefaults.tts.voice_id\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Root \", _jsx(_components.code, {\n children: \"stt\"\n }), \" and \", _jsx(_components.code, {\n children: \"tts\"\n }), \" are not used by flow agents.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The same \", _jsx(_components.code, {\n children: \"422\"\n }), \" checks as create apply: the referenced record must exist, be \", _jsx(_components.code, {\n children: \"ACTIVE\"\n }), \", support the agent’s \", _jsx(_components.code, {\n children: \"llm_type\"\n }), \" and, for a custom model, belong to your organization.\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Rejected LLM fields\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"llm.model_provider\"\n }), \", \", _jsx(_components.code, {\n children: \"llm.model_name\"\n }), \" and \", _jsx(_components.code, {\n children: \"llm.model_display_name\"\n }), \" are not accepted. The model is chosen by \", _jsx(_components.code, {\n children: \"llm.llm_id\"\n }), \" alone, and those fields are always refilled from the catalog. A request that sends any of them returns \", _jsx(_components.code, {\n children: \"400\"\n }), \", and every offending field is named in \", _jsx(_components.code, {\n children: \"error_details\"\n }), \":\"]\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"7\",\n language: \"json\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"json\",\n children: _jsxs(_components.code, {\n language: \"json\",\n numberOfLines: \"7\",\n children: [_jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"{\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"status\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"error\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"message\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"Agent validation failed\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \",\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"error_details\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": {\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#116329\",\n \"--shiki-dark\": \"#9CDCFE\"\n },\n children: \" \\\"llm.model_name\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \": \"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \"\\\"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\\\"\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \" }\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#1F2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n children: \"}\"\n })\n }), \"\\n\"]\n })\n })\n }), \"\\n\", _jsx(Warning, {\n children: _jsxs(_components.p, {\n children: [_jsx(_components.a, {\n href: \"/api-reference/ai-agents-v3/get-ai-agent\",\n children: \"Get AI Agent\"\n }), \" returns those three fields inside \", _jsx(_components.code, {\n children: \"data.llm\"\n }), \". A client that reads an agent and sends the same \", _jsx(_components.code, {\n children: \"llm\"\n }), \" object back gets this \", _jsx(_components.code, {\n children: \"400\"\n }), \". Remove the three fields, or send only the fields you change.\"]\n })\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Field notes\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"model_temperature\"\n }), \": when omitted, the stored value is kept, \", _jsxs(_components.strong, {\n children: [\"even when \", _jsx(_components.code, {\n children: \"llm_id\"\n }), \" changes\"]\n }), \". The new model’s temperature applies only if the agent had none. A sent value, \", _jsx(_components.code, {\n children: \"0\"\n }), \" included, is stored as is.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"vad_activation_threshold\"\n }), \": omitting the key keeps the stored value. A number from \", _jsx(_components.code, {\n children: \"0.10\"\n }), \" to \", _jsx(_components.code, {\n children: \"0.90\"\n }), \" replaces it.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"wait_time_before_detecting_end_of_speech\"\n }), \" and \", _jsx(_components.code, {\n children: \"max_endpointing_delay\"\n }), \" apply to \", _jsx(_components.code, {\n children: \"flow\"\n }), \" agents only. When a request changes either one, \", _jsx(_components.code, {\n children: \"max_endpointing_delay\"\n }), \" must stay greater than the wait time after the merge, otherwise the request returns \", _jsx(_components.code, {\n children: \"422\"\n }), \".\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(Warning, {\n children: _jsxs(_components.p, {\n children: [_jsxs(_components.strong, {\n children: [\"Sending \", _jsx(_components.code, {\n children: \"vad_activation_threshold: null\"\n }), \" does not clear the stored value yet.\"]\n }), \" The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one.\"]\n })\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Versioning\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Every successful update writes a new agent version. The response carries \", _jsx(_components.code, {\n children: \"current_version\"\n }), \" and, when the version has a label, \", _jsx(_components.code, {\n children: \"current_version_name\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Response envelope\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Every v3 response uses the same envelope:\"\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Field\"\n }), _jsx(_components.th, {\n children: \"Meaning\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"status\"\n })\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"success\"\n }), \" or \", _jsx(_components.code, {\n children: \"error\"\n }), \". Always lowercase.\"]\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"message\"\n })\n }), _jsx(_components.td, {\n children: \"A human-readable summary.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"data\"\n })\n }), _jsx(_components.td, {\n children: \"The result. Absent on errors.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"error_details\"\n })\n }), _jsx(_components.td, {\n children: \"A map from field path to message. Present only on some errors.\"\n })]\n })]\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Fields with no value are omitted rather than returned as \", _jsx(_components.code, {\n children: \"null\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The response message and \", _jsx(_components.code, {\n children: \"operation_type\"\n }), \" depend on the agent type: \", _jsx(_components.code, {\n children: \"Simple agent updated successfully\"\n }), \" / \", _jsx(_components.code, {\n children: \"UPDATE\"\n }), \", \", _jsx(_components.code, {\n children: \"Flow builder agent updated successfully\"\n }), \" / \", _jsx(_components.code, {\n children: \"UPDATE_FLOW_BUILDER\"\n }), \", or \", _jsx(_components.code, {\n children: \"Agentic agent updated successfully\"\n }), \" / \", _jsx(_components.code, {\n children: \"UPDATE_AGENTIC\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Status codes\"\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Code\"\n }), _jsx(_components.th, {\n children: \"When\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"200\"\n })\n }), _jsx(_components.td, {\n children: \"Updated. The body carries the full agent.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"400\"\n })\n }), _jsxs(_components.td, {\n children: [\"The request sent \", _jsx(_components.code, {\n children: \"llm.model_provider\"\n }), \", \", _jsx(_components.code, {\n children: \"llm.model_name\"\n }), \" or \", _jsx(_components.code, {\n children: \"llm.model_display_name\"\n }), \".\"]\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"403\"\n })\n }), _jsx(_components.td, {\n children: \"The agent belongs to another organization or workspace.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"404\"\n })\n }), _jsx(_components.td, {\n children: \"No such agent.\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"422\"\n })\n }), _jsx(_components.td, {\n children: \"Validation failed, or a referenced catalog record was missing, inactive or incompatible.\"\n })]\n })]\n })]\n })]\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update AI Agent","description":"Update an agent and return the full updated agent.\n\n\u003cWarning>\n**The v2 equivalent, [`PUT /v2/ai-agents/{agent_id}`](/api-reference/ai-agents-v2/update-ai-agent), is deprecated and stops working on November 30, 2026.** This is the v3 endpoint. [Migrate from v2 to v3](/api-reference/ai-agents-v3/migrate-from-v2) before that date.\n\u003c/Warning>\n\n## Partial updates\n\nAlthough this is a `PUT`, the update **merges**. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (`llm`, `stt`, `tts`) merge the same way, so `{\"tts\": {\"provider_id\": \"…\", \"voice_id\": \"…\"}}` changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it.\n\n`llm.graph_data` is the exception: it is not merged. A sent `graph_data` replaces the stored graph as a whole.\n\n## Changing the LLM, STT model or voice\n\nSelections use the same id-based contract as [Create AI Agent](/api-reference/ai-agents-v3/create-ai-agent):\n\n- Send `stt.provider_id` + `stt.model_id` or `tts.provider_id` + `tts.voice_id`. The reference is resolved again against the provider catalog, and the stored names are refreshed.\n- Send `llm.llm_id`, or `graph_data.agentDefaults.llm.llm_id` for a `flow` agent. The LLM fields on the agent are refreshed from the model catalog.\n\n## Flow agents\n\n- To change a flow agent's default STT model, LLM or voice, send `llm.llm_type: \"flow\"` and the **complete** `llm.graph_data` with the new ids in `agentDefaults`. A partial graph replaces the stored one. See the `flow_graph` request example.\n- `graph_data` without `llm.llm_type` returns `422`.\n- The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns `422` with the graph path in `error_details`, for example `llm.graph_data.agentDefaults.tts.voice_id`.\n- Root `stt` and `tts` are not used by flow agents.\n\nThe same `422` checks as create apply: the referenced record must exist, be `ACTIVE`, support the agent's `llm_type` and, for a custom model, belong to your organization.\n\n## Rejected LLM fields\n\n`llm.model_provider`, `llm.model_name` and `llm.model_display_name` are not accepted. The model is chosen by `llm.llm_id` alone, and those fields are always refilled from the catalog. A request that sends any of them returns `400`, and every offending field is named in `error_details`:\n\n```json\n{\n \"status\": \"error\",\n \"message\": \"Agent validation failed\",\n \"error_details\": {\n \"llm.model_name\": \"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\"\n }\n}\n```\n\n\u003cWarning>\n[Get AI Agent](/api-reference/ai-agents-v3/get-ai-agent) returns those three fields inside `data.llm`. A client that reads an agent and sends the same `llm` object back gets this `400`. Remove the three fields, or send only the fields you change.\n\u003c/Warning>\n\n## Field notes\n\n- `model_temperature`: when omitted, the stored value is kept, **even when `llm_id` changes**. The new model's temperature applies only if the agent had none. A sent value, `0` included, is stored as is.\n- `vad_activation_threshold`: omitting the key keeps the stored value. A number from `0.10` to `0.90` replaces it.\n- `wait_time_before_detecting_end_of_speech` and `max_endpointing_delay` apply to `flow` agents only. When a request changes either one, `max_endpointing_delay` must stay greater than the wait time after the merge, otherwise the request returns `422`.\n\n\u003cWarning>\n**Sending `vad_activation_threshold: null` does not clear the stored value yet.** The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one.\n\u003c/Warning>\n\n## Versioning\n\nEvery successful update writes a new agent version. The response carries `current_version` and, when the version has a label, `current_version_name`.\n\n## Response envelope\n\nEvery v3 response uses the same envelope:\n\n| Field | Meaning |\n| --- | --- |\n| `status` | `success` or `error`. Always lowercase. |\n| `message` | A human-readable summary. |\n| `data` | The result. Absent on errors. |\n| `error_details` | A map from field path to message. Present only on some errors. |\n\nFields with no value are omitted rather than returned as `null`.\n\nThe response message and `operation_type` depend on the agent type: `Simple agent updated successfully` / `UPDATE`, `Flow builder agent updated successfully` / `UPDATE_FLOW_BUILDER`, or `Agentic agent updated successfully` / `UPDATE_AGENTIC`.\n\n## Status codes\n\n| Code | When |\n| --- | --- |\n| `200` | Updated. The body carries the full agent. |\n| `400` | The request sent `llm.model_provider`, `llm.model_name` or `llm.model_display_name`. |\n| `403` | The agent belongs to another organization or workspace. |\n| `404` | No such agent. |\n| `422` | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v3/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v3/update-ai-agent","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["AI Agents v3"],"summary":"Update AI Agent","description":"Update an agent and return the full updated agent.\n\n\u003cWarning>\n**The v2 equivalent, [`PUT /v2/ai-agents/{agent_id}`](/api-reference/ai-agents-v2/update-ai-agent), is deprecated and stops working on November 30, 2026.** This is the v3 endpoint. [Migrate from v2 to v3](/api-reference/ai-agents-v3/migrate-from-v2) before that date.\n\u003c/Warning>\n\n## Partial updates\n\nAlthough this is a `PUT`, the update **merges**. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (`llm`, `stt`, `tts`) merge the same way, so `{\"tts\": {\"provider_id\": \"…\", \"voice_id\": \"…\"}}` changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it.\n\n`llm.graph_data` is the exception: it is not merged. A sent `graph_data` replaces the stored graph as a whole.\n\n## Changing the LLM, STT model or voice\n\nSelections use the same id-based contract as [Create AI Agent](/api-reference/ai-agents-v3/create-ai-agent):\n\n- Send `stt.provider_id` + `stt.model_id` or `tts.provider_id` + `tts.voice_id`. The reference is resolved again against the provider catalog, and the stored names are refreshed.\n- Send `llm.llm_id`, or `graph_data.agentDefaults.llm.llm_id` for a `flow` agent. The LLM fields on the agent are refreshed from the model catalog.\n\n## Flow agents\n\n- To change a flow agent's default STT model, LLM or voice, send `llm.llm_type: \"flow\"` and the **complete** `llm.graph_data` with the new ids in `agentDefaults`. A partial graph replaces the stored one. See the `flow_graph` request example.\n- `graph_data` without `llm.llm_type` returns `422`.\n- The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns `422` with the graph path in `error_details`, for example `llm.graph_data.agentDefaults.tts.voice_id`.\n- Root `stt` and `tts` are not used by flow agents.\n\nThe same `422` checks as create apply: the referenced record must exist, be `ACTIVE`, support the agent's `llm_type` and, for a custom model, belong to your organization.\n\n## Rejected LLM fields\n\n`llm.model_provider`, `llm.model_name` and `llm.model_display_name` are not accepted. The model is chosen by `llm.llm_id` alone, and those fields are always refilled from the catalog. A request that sends any of them returns `400`, and every offending field is named in `error_details`:\n\n```json\n{\n \"status\": \"error\",\n \"message\": \"Agent validation failed\",\n \"error_details\": {\n \"llm.model_name\": \"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\"\n }\n}\n```\n\n\u003cWarning>\n[Get AI Agent](/api-reference/ai-agents-v3/get-ai-agent) returns those three fields inside `data.llm`. A client that reads an agent and sends the same `llm` object back gets this `400`. Remove the three fields, or send only the fields you change.\n\u003c/Warning>\n\n## Field notes\n\n- `model_temperature`: when omitted, the stored value is kept, **even when `llm_id` changes**. The new model's temperature applies only if the agent had none. A sent value, `0` included, is stored as is.\n- `vad_activation_threshold`: omitting the key keeps the stored value. A number from `0.10` to `0.90` replaces it.\n- `wait_time_before_detecting_end_of_speech` and `max_endpointing_delay` apply to `flow` agents only. When a request changes either one, `max_endpointing_delay` must stay greater than the wait time after the merge, otherwise the request returns `422`.\n\n\u003cWarning>\n**Sending `vad_activation_threshold: null` does not clear the stored value yet.** The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one.\n\u003c/Warning>\n\n## Versioning\n\nEvery successful update writes a new agent version. The response carries `current_version` and, when the version has a label, `current_version_name`.\n\n## Response envelope\n\nEvery v3 response uses the same envelope:\n\n| Field | Meaning |\n| --- | --- |\n| `status` | `success` or `error`. Always lowercase. |\n| `message` | A human-readable summary. |\n| `data` | The result. Absent on errors. |\n| `error_details` | A map from field path to message. Present only on some errors. |\n\nFields with no value are omitted rather than returned as `null`.\n\nThe response message and `operation_type` depend on the agent type: `Simple agent updated successfully` / `UPDATE`, `Flow builder agent updated successfully` / `UPDATE_FLOW_BUILDER`, or `Agentic agent updated successfully` / `UPDATE_AGENTIC`.\n\n## Status codes\n\n| Code | When |\n| --- | --- |\n| `200` | Updated. The body carries the full agent. |\n| `400` | The request sent `llm.model_provider`, `llm.model_name` or `llm.model_display_name`. |\n| `403` | The agent belongs to another organization or workspace. |\n| `404` | No such agent. |\n| `422` | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |","operationId":"update_ai_agent_v3","parameters":["072984e3-e1ff-43fc-aa01-199927d808e5"],"requestBody":"a023a299-b557-408f-ab79-e544ae9c8fa8","responses":{"200":"c046ea71-3502-4a3f-8e3a-8cbce696bd9c","400":"37a9fe6b-4c90-4a7b-835d-a2b56878a338","403":"1b45ded8-6637-4319-b6a4-51667fd51235","404":"54abb6c0-f96b-451f-bee2-04bcf26fbc4a","422":"4317e94b-4502-4abe-9bb8-a8ba7146c746"},"method":"put","type":"path","servers":[],"security":[],"path":"/v3/ai-agents/{agent_id}","baseUrlOptions":[],"title":"Update AI Agent","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"072984e3-e1ff-43fc-aa01-199927d808e5":{"name":"agent_id","in":"path","required":true,"description":"Unique identifier of the AI agent (`ai_agent_id`).","schema":{"type":"string","title":"Agent Id","isRequired":true,"description":"Unique identifier of the AI agent (`ai_agent_id`).","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"UpdateAIAgentV3Request","description":"Every field is optional. Only the fields present in the body are applied; the rest keep their stored value.","properties":{"language_code":{"oneOf":[{"type":"string","title":"Language Code","description":"BCP-47 language code for the agent, for example `en-US`.","uniqueKey":"language_code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language Code","description":"BCP-47 language code for the agent, for example `en-US`.","uniqueKey":"language_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"language_code","typeLabel":"string | null"},"timezone":{"oneOf":[{"type":"string","title":"Timezone","description":"Canonical IANA time zone the agent reads its clock in, e.g. 'Asia/Tokyo'. Rejected if it is not a tzdb name: abbreviations (JST), UTC offsets (+09:00) and city-only strings (Tokyo) are not accepted. Omitted or null leaves the agent without a timezone; there is no default.","uniqueKey":"timezone.oneOf.0","typeLabel":"string"},{"type":"null","title":"Timezone","description":"Canonical IANA time zone the agent reads its clock in, e.g. 'Asia/Tokyo'. Rejected if it is not a tzdb name: abbreviations (JST), UTC offsets (+09:00) and city-only strings (Tokyo) are not accepted. Omitted or null leaves the agent without a timezone; there is no default.","uniqueKey":"timezone.oneOf.1","typeLabel":"null"}],"uniqueKey":"timezone","typeLabel":"string | null"},"speech_speed":{"oneOf":[{"type":"number","title":"Speech Speed","description":"Speaking-rate multiplier for the agent's audio: 1.0 is normal, below 1.0 slower, above 1.0 faster.","default":1,"maximum":2,"minimum":0.5,"uniqueKey":"speech_speed.oneOf.0","typeLabel":"number"},{"type":"null","title":"Speech Speed","description":"Speaking-rate multiplier for the agent's audio: 1.0 is normal, below 1.0 slower, above 1.0 faster.","default":1,"uniqueKey":"speech_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"speech_speed","typeLabel":"number | null"},"knowledge_base_id":{"oneOf":[{"type":"string","title":"Knowledge Base Id","description":"Knowledge base the agent retrieves from.","uniqueKey":"knowledge_base_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Knowledge Base Id","description":"Knowledge base the agent retrieves from.","uniqueKey":"knowledge_base_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"knowledge_base_id","typeLabel":"string | null"},"welcome_message":{"oneOf":[{"type":"string","title":"Welcome Message","description":"Custom message the agent speaks when the call begins.","example":"Hello! Thanks for calling. How can I help you today?","uniqueKey":"welcome_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Welcome Message","description":"Custom message the agent speaks when the call begins.","example":"Hello! Thanks for calling. How can I help you today?","uniqueKey":"welcome_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"welcome_message","typeLabel":"string | null"},"welcome_message_delay_in_seconds":{"oneOf":[{"type":"number","title":"Welcome Message Delay In Seconds","description":"Delay in seconds, `0`–`10`, before the agent speaks the welcome message.","default":2,"maximum":10,"minimum":0,"uniqueKey":"welcome_message_delay_in_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Welcome Message Delay In Seconds","description":"Delay in seconds, `0`–`10`, before the agent speaks the welcome message.","default":2,"uniqueKey":"welcome_message_delay_in_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"welcome_message_delay_in_seconds","typeLabel":"number | null"},"enable_user_interruptions":{"oneOf":[{"type":"boolean","title":"Enable User Interruptions","description":"Whether the caller can interrupt the agent while it is speaking.","default":true,"uniqueKey":"enable_user_interruptions.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enable User Interruptions","description":"Whether the caller can interrupt the agent while it is speaking.","default":true,"uniqueKey":"enable_user_interruptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"enable_user_interruptions","typeLabel":"boolean | null"},"interruption_mode":{"oneOf":[{"type":"string","title":"Interruption Mode","description":"Interruption detection strategy. Null when unset.","enum":["vad","adaptive"],"uniqueKey":"interruption_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Interruption Mode","description":"Interruption detection strategy. Null when unset.","uniqueKey":"interruption_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"interruption_mode","typeLabel":"enum\u003cstring> | null"},"minimum_speech_duration_for_interruptions":{"oneOf":[{"type":"number","title":"Minimum Speech Duration For Interruptions","description":"Seconds of speech before an interruption is accepted. Minimum 0.5 on create; 0.0 is accepted on update.","default":0.5,"maximum":15,"minimum":0.5,"uniqueKey":"minimum_speech_duration_for_interruptions.oneOf.0","typeLabel":"number"},{"type":"null","title":"Minimum Speech Duration For Interruptions","description":"Seconds of speech before an interruption is accepted. Minimum 0.5 on create; 0.0 is accepted on update.","default":0.5,"uniqueKey":"minimum_speech_duration_for_interruptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"minimum_speech_duration_for_interruptions","typeLabel":"number | null"},"minimum_words_before_interruption":{"oneOf":[{"type":"integer","title":"Minimum Words Before Interruption","description":"Minimum number of words, `0`–`10`, the caller must say before the agent treats the speech as an interruption. Used when `enable_user_interruptions` is `true`.","default":2,"maximum":10,"minimum":0,"uniqueKey":"minimum_words_before_interruption.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Minimum Words Before Interruption","description":"Minimum number of words, `0`–`10`, the caller must say before the agent treats the speech as an interruption. Used when `enable_user_interruptions` is `true`.","default":2,"uniqueKey":"minimum_words_before_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"minimum_words_before_interruption","typeLabel":"integer | null"},"vad_activation_threshold":{"oneOf":[{"type":"number","title":"Vad Activation Threshold","description":"Voice activity detection sensitivity, `0.10`–`0.90`. There is no service-side default: when unset, the call handler uses its own per-language default, and the key is omitted from create, get and update responses. On update, omitting the key keeps the stored value.","maximum":0.9,"minimum":0.1,"uniqueKey":"vad_activation_threshold.oneOf.0","typeLabel":"number"},{"type":"null","title":"Vad Activation Threshold","description":"Voice activity detection sensitivity, `0.10`–`0.90`. There is no service-side default: when unset, the call handler uses its own per-language default, and the key is omitted from create, get and update responses. On update, omitting the key keeps the stored value.","uniqueKey":"vad_activation_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"vad_activation_threshold","typeLabel":"number | null"},"wait_time_before_detecting_end_of_speech":{"oneOf":[{"type":"number","title":"Wait Time Before Detecting End Of Speech","description":"Seconds of silence before the caller's turn is treated as finished. **Flow agents only**: when omitted on create, a flow agent gets `0.2`. Other agent types ignore the value: create stores nothing and update keeps whatever was stored.","maximum":15,"minimum":0,"uniqueKey":"wait_time_before_detecting_end_of_speech.oneOf.0","typeLabel":"number"},{"type":"null","title":"Wait Time Before Detecting End Of Speech","description":"Seconds of silence before the caller's turn is treated as finished. **Flow agents only**: when omitted on create, a flow agent gets `0.2`. Other agent types ignore the value: create stores nothing and update keeps whatever was stored.","uniqueKey":"wait_time_before_detecting_end_of_speech.oneOf.1","typeLabel":"null"}],"uniqueKey":"wait_time_before_detecting_end_of_speech","typeLabel":"number | null"},"max_endpointing_delay":{"oneOf":[{"type":"number","title":"Max Endpointing Delay","description":"Upper bound, in seconds, on how long end-of-speech detection may wait. **Flow agents only**: when omitted on create, a flow agent gets `2.0`. It must be greater than `wait_time_before_detecting_end_of_speech`, otherwise the request returns `422`. Other agent types ignore the value.","maximum":15,"minimum":0,"uniqueKey":"max_endpointing_delay.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Endpointing Delay","description":"Upper bound, in seconds, on how long end-of-speech detection may wait. **Flow agents only**: when omitted on create, a flow agent gets `2.0`. It must be greater than `wait_time_before_detecting_end_of_speech`, otherwise the request returns `422`. Other agent types ignore the value.","uniqueKey":"max_endpointing_delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"max_endpointing_delay","typeLabel":"number | null"},"ambient_sound":{"oneOf":[{"type":"string","title":"Ambient Sound","description":"Background sound mixed into the call audio. `none` adds no sound.","default":"none","enum":["office","cafe","restaurant","park","street","home","library","airport","train_station","beach","none"],"uniqueKey":"ambient_sound.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Ambient Sound","description":"Background sound mixed into the call audio. `none` adds no sound.","default":"none","uniqueKey":"ambient_sound.oneOf.1","typeLabel":"null"}],"uniqueKey":"ambient_sound","typeLabel":"enum\u003cstring> | null"},"ambient_sound_volume":{"oneOf":[{"type":"number","title":"Ambient Sound Volume","description":"Volume of the ambient sound, `0`–`2`, where `1` is normal volume.","default":1,"maximum":2,"minimum":0,"uniqueKey":"ambient_sound_volume.oneOf.0","typeLabel":"number"},{"type":"null","title":"Ambient Sound Volume","description":"Volume of the ambient sound, `0`–`2`, where `1` is normal volume.","default":1,"uniqueKey":"ambient_sound_volume.oneOf.1","typeLabel":"null"}],"uniqueKey":"ambient_sound_volume","typeLabel":"number | null"},"enable_noise_cancellation":{"oneOf":[{"type":"boolean","title":"Enable Noise Cancellation","description":"Whether to apply noise cancellation to the caller's audio before speech recognition.","default":true,"uniqueKey":"enable_noise_cancellation.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enable Noise Cancellation","description":"Whether to apply noise cancellation to the caller's audio before speech recognition.","default":true,"uniqueKey":"enable_noise_cancellation.oneOf.1","typeLabel":"null"}],"uniqueKey":"enable_noise_cancellation","typeLabel":"boolean | null"},"webhook_url":{"oneOf":[{"type":"string","title":"Webhook Url","description":"Receives webhook notifications about call events.","uniqueKey":"webhook_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Webhook Url","description":"Receives webhook notifications about call events.","uniqueKey":"webhook_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"webhook_url","typeLabel":"string | null"},"end_call_after_silence_seconds":{"oneOf":[{"type":"integer","title":"End Call After Silence Seconds","description":"Seconds of caller silence, `10`–`30`, after which the call ends automatically.","default":10,"maximum":30,"minimum":10,"uniqueKey":"end_call_after_silence_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"End Call After Silence Seconds","description":"Seconds of caller silence, `10`–`30`, after which the call ends automatically.","default":10,"uniqueKey":"end_call_after_silence_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"end_call_after_silence_seconds","typeLabel":"integer | null"},"max_call_duration_seconds":{"oneOf":[{"type":"integer","title":"Max Call Duration Seconds","description":"Maximum duration of the call in seconds, `30`–`3600`.","default":1800,"maximum":3600,"minimum":30,"uniqueKey":"max_call_duration_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Call Duration Seconds","description":"Maximum duration of the call in seconds, `30`–`3600`.","default":1800,"uniqueKey":"max_call_duration_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"max_call_duration_seconds","typeLabel":"integer | null"},"end_call_instruction":{"oneOf":[{"type":"string","title":"End Call Instruction","description":"Instruction given to the LLM governing how and when to end the call.","uniqueKey":"end_call_instruction.oneOf.0","typeLabel":"string"},{"type":"null","title":"End Call Instruction","description":"Instruction given to the LLM governing how and when to end the call.","uniqueKey":"end_call_instruction.oneOf.1","typeLabel":"null"}],"uniqueKey":"end_call_instruction","typeLabel":"string | null"},"agent_ended_call_delay_seconds":{"oneOf":[{"type":"number","title":"Agent Ended Call Delay Seconds","description":"Delay in seconds, `0`–`10`, before the call ends when the agent decides to end it.","default":2,"maximum":10,"minimum":0,"uniqueKey":"agent_ended_call_delay_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Agent Ended Call Delay Seconds","description":"Delay in seconds, `0`–`10`, before the call ends when the agent decides to end it.","default":2,"uniqueKey":"agent_ended_call_delay_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_ended_call_delay_seconds","typeLabel":"number | null"},"enable_amd":{"oneOf":[{"type":"boolean","title":"Enable Amd","description":"Enable answering-machine detection.","default":false,"uniqueKey":"enable_amd.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enable Amd","description":"Enable answering-machine detection.","default":false,"uniqueKey":"enable_amd.oneOf.1","typeLabel":"null"}],"uniqueKey":"enable_amd","typeLabel":"boolean | null"},"amd_voicemail_message":{"oneOf":[{"type":"string","title":"Amd Voicemail Message","description":"Played when answering-machine detection identifies a voicemail.","uniqueKey":"amd_voicemail_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Amd Voicemail Message","description":"Played when answering-machine detection identifies a voicemail.","uniqueKey":"amd_voicemail_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"amd_voicemail_message","typeLabel":"string | null"},"voicemail_detection_timeout_seconds":{"oneOf":[{"type":"integer","title":"Voicemail Detection Timeout Seconds","description":"Seconds to wait for voicemail detection before taking action. Used when `enable_amd` is `true`.","default":90,"minimum":0,"uniqueKey":"voicemail_detection_timeout_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Voicemail Detection Timeout Seconds","description":"Seconds to wait for voicemail detection before taking action. Used when `enable_amd` is `true`.","default":90,"uniqueKey":"voicemail_detection_timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"voicemail_detection_timeout_seconds","typeLabel":"integer | null"},"silence_reminder_enabled":{"oneOf":[{"type":"boolean","title":"Silence Reminder Enabled","description":"Whether the agent reminds the caller to speak after a period of silence.","default":false,"uniqueKey":"silence_reminder_enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Silence Reminder Enabled","description":"Whether the agent reminds the caller to speak after a period of silence.","default":false,"uniqueKey":"silence_reminder_enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"silence_reminder_enabled","typeLabel":"boolean | null"},"silence_reminder_duration_seconds":{"oneOf":[{"type":"number","title":"Silence Reminder Duration Seconds","description":"Seconds of silence, `10`–`30`, before the agent reminds the caller to speak. Used when `silence_reminder_enabled` is `true`.","default":10,"maximum":30,"minimum":10,"uniqueKey":"silence_reminder_duration_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Silence Reminder Duration Seconds","description":"Seconds of silence, `10`–`30`, before the agent reminds the caller to speak. Used when `silence_reminder_enabled` is `true`.","default":10,"uniqueKey":"silence_reminder_duration_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"silence_reminder_duration_seconds","typeLabel":"number | null"},"max_number_of_silence_reminders":{"oneOf":[{"type":"integer","title":"Max Number Of Silence Reminders","description":"Maximum number of silence reminders, `1`–`10`. Used when `silence_reminder_enabled` is `true`.","default":3,"maximum":10,"minimum":1,"uniqueKey":"max_number_of_silence_reminders.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Number Of Silence Reminders","description":"Maximum number of silence reminders, `1`–`10`. Used when `silence_reminder_enabled` is `true`.","default":3,"uniqueKey":"max_number_of_silence_reminders.oneOf.1","typeLabel":"null"}],"uniqueKey":"max_number_of_silence_reminders","typeLabel":"integer | null"},"interval_between_silence_reminders_seconds":{"oneOf":[{"type":"number","title":"Interval Between Silence Reminders Seconds","description":"Seconds between two consecutive silence reminders, `3`–`30`. Used when `silence_reminder_enabled` is `true`.","default":10,"maximum":30,"minimum":3,"uniqueKey":"interval_between_silence_reminders_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Interval Between Silence Reminders Seconds","description":"Seconds between two consecutive silence reminders, `3`–`30`. Used when `silence_reminder_enabled` is `true`.","default":10,"uniqueKey":"interval_between_silence_reminders_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"interval_between_silence_reminders_seconds","typeLabel":"number | null"},"dynamic_data_config":{"oneOf":[{"type":"array","items":{"type":"object","title":"DynamicDataConfigItem","description":"An external HTTP call the agent makes to fetch data during a call.","properties":{"name":{"oneOf":[{"type":"string","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].description","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].url","typeLabel":"string | null"},"method":{"oneOf":[{"type":"string","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].method.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].method","typeLabel":"string | null"},"timeout":{"oneOf":[{"type":"integer","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"minimum":1000,"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].timeout.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].timeout","typeLabel":"integer | null"},"headers":{"oneOf":[{"type":"object","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"additionalProperties":{"type":"string","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].headers.oneOf.0","typeLabel":"Headers · object"},{"type":"null","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].headers","typeLabel":"Headers · object | null"},"body":{"oneOf":[{"type":"object","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].body.oneOf.0","typeLabel":"Body · object"},{"type":"null","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].body.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].body","typeLabel":"Body · object | null"},"query":{"oneOf":[{"type":"object","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].query.oneOf.0","typeLabel":"Query · object"},{"type":"null","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].query.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].query","typeLabel":"Query · object | null"},"cache":{"oneOf":[{"type":"boolean","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].cache.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].cache.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].cache","typeLabel":"boolean | null"},"enabled":{"oneOf":[{"type":"boolean","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean | null"},"config":{"oneOf":[{"type":"string","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].config.oneOf.0","typeLabel":"string"},{"type":"null","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].config.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].config","typeLabel":"string | null"},"response_data":{"oneOf":[{"type":"array","items":{"type":"object","title":"ResponseDataItem","properties":{"name":{"type":"string","title":"Name","description":"Unique name for this extracted field.","examples":["customer_name"],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].name","typeLabel":"string"},"data":{"type":"string","title":"Data","description":"JSONPath expression selecting the value.","examples":["$.customer.name"],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].data","typeLabel":"string"},"context":{"oneOf":[{"type":"string","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].context.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].context","typeLabel":"string | null"}},"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX]","typeLabel":"ResponseDataItem · object"},"title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0","typeLabel":"ResponseDataItem · object[]"},{"type":"null","title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX].response_data","typeLabel":"ResponseDataItem · object[] | null"}},"uniqueKey":"dynamic_data_config.oneOf.0.items.[INDEX]","typeLabel":"DynamicDataConfigItem · object"},"title":"Dynamic Data Config","description":"External HTTP sources the agent calls to fetch data during the conversation, for example a customer record. See [Dynamic data](/external_context/dynamic_data).","uniqueKey":"dynamic_data_config.oneOf.0","typeLabel":"DynamicDataConfigItem · object[]"},{"type":"null","title":"Dynamic Data Config","description":"External HTTP sources the agent calls to fetch data during the conversation, for example a customer record. See [Dynamic data](/external_context/dynamic_data).","uniqueKey":"dynamic_data_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"dynamic_data_config","typeLabel":"DynamicDataConfigItem · object[] | null"},"post_call_analysis":{"oneOf":[{"type":"array","items":{"type":"object","title":"PostCallAnalysisItem","description":"A legacy analysis item embedded on the agent. Distinct from the post-call analysis configuration API at `/v2/ai-agents/{ai_agent_id}/postcall-analysis`.","properties":{"type":{"oneOf":[{"type":"string","title":"Type","description":"Shape of the result. `string` returns a text string, `enum` returns one value from `choices`, `boolean` returns `true` or `false`, and `number` returns a numeric value.","enum":["string","enum","boolean","number"],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Type","description":"Shape of the result. `string` returns a text string, `enum` returns one value from `choices`, `boolean` returns `true` or `false`, and `number` returns a numeric value.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].type.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring> | null"},"name":{"oneOf":[{"type":"string","title":"Name","description":"Unique identifier for this analysis item.","example":"call_summary","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Unique identifier for this analysis item.","example":"call_summary","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Detailed explanation of what this analysis item measures or determines from the call.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Detailed explanation of what this analysis item measures or determines from the call.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].description","typeLabel":"string | null"},"system_prompt":{"oneOf":[{"type":"string","title":"System Prompt","description":"Instructions for the AI on how to analyze the call and produce this item.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"System Prompt","description":"Instructions for the AI on how to analyze the call and produce this item.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].system_prompt","typeLabel":"string | null"},"examples":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].examples.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Examples","description":"Sample responses that guide the AI toward the expected answer. For `string` items.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].examples.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Examples","description":"Sample responses that guide the AI toward the expected answer. For `string` items.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].examples.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].examples","typeLabel":"string[] | null"},"choices":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].choices.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Choices","description":"The complete list of values the item can return. For `enum` items.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].choices.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Choices","description":"The complete list of values the item can return. For `enum` items.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].choices.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].choices","typeLabel":"string[] | null"},"enabled":{"oneOf":[{"type":"boolean","title":"Enabled","description":"Whether this analysis item is enabled.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enabled","description":"Whether this analysis item is enabled.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean | null"},"dynamic_data_config":{"oneOf":[{"type":"object","title":"DynamicDataConfigItem","description":"An external HTTP call the agent makes to fetch data during a call.","properties":{"name":{"oneOf":[{"type":"string","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.description","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.url.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.url","typeLabel":"string | null"},"method":{"oneOf":[{"type":"string","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.method.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.method","typeLabel":"string | null"},"timeout":{"oneOf":[{"type":"integer","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"minimum":1000,"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.timeout.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.timeout","typeLabel":"integer | null"},"headers":{"oneOf":[{"type":"object","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"additionalProperties":{"type":"string","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers.oneOf.0","typeLabel":"Headers · object"},{"type":"null","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers","typeLabel":"Headers · object | null"},"body":{"oneOf":[{"type":"object","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.body.oneOf.0","typeLabel":"Body · object"},{"type":"null","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.body.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.body","typeLabel":"Body · object | null"},"query":{"oneOf":[{"type":"object","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.query.oneOf.0","typeLabel":"Query · object"},{"type":"null","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.query.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.query","typeLabel":"Query · object | null"},"cache":{"oneOf":[{"type":"boolean","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.cache.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.cache.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.cache","typeLabel":"boolean | null"},"enabled":{"oneOf":[{"type":"boolean","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.enabled","typeLabel":"boolean | null"},"config":{"oneOf":[{"type":"string","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.config.oneOf.0","typeLabel":"string"},{"type":"null","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.config.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.config","typeLabel":"string | null"},"response_data":{"oneOf":[{"type":"array","items":{"type":"object","title":"ResponseDataItem","properties":{"name":{"type":"string","title":"Name","description":"Unique name for this extracted field.","examples":["customer_name"],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].name","typeLabel":"string"},"data":{"type":"string","title":"Data","description":"JSONPath expression selecting the value.","examples":["$.customer.name"],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].data","typeLabel":"string"},"context":{"oneOf":[{"type":"string","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].context.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].context","typeLabel":"string | null"}},"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX]","typeLabel":"ResponseDataItem · object"},"title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0","typeLabel":"ResponseDataItem · object[]"},{"type":"null","title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data","typeLabel":"ResponseDataItem · object[] | null"}},"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0","typeLabel":"DynamicDataConfigItem · object"},{"type":"null","title":"Dynamic Data Config","description":"Dynamic data source the analysis can use.","uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config","typeLabel":"DynamicDataConfigItem · object | null"}},"uniqueKey":"post_call_analysis.oneOf.0.items.[INDEX]","typeLabel":"PostCallAnalysisItem · object"},"title":"Post Call Analysis","description":"Analysis items to extract from the call after it ends. The `type` of each item sets the shape of its result. You can also manage these items with the [post-call analysis API](/api-reference/post-call-analysis/get-post-call-analysis-configuration-for-an-agent).","example":[{"type":"string","name":"call_summary","description":"A short summary of the call.","system_prompt":"Summarize the call in two sentences.","examples":["The caller asked about a late delivery and was given a new date."]},{"type":"enum","name":"customer_sentiment","description":"Overall sentiment of the caller.","system_prompt":"Classify the caller's overall sentiment.","choices":["positive","neutral","negative"]}],"uniqueKey":"post_call_analysis.oneOf.0","typeLabel":"PostCallAnalysisItem · object[]"},{"type":"null","title":"Post Call Analysis","description":"Analysis items to extract from the call after it ends. The `type` of each item sets the shape of its result. You can also manage these items with the [post-call analysis API](/api-reference/post-call-analysis/get-post-call-analysis-configuration-for-an-agent).","example":[{"type":"string","name":"call_summary","description":"A short summary of the call.","system_prompt":"Summarize the call in two sentences.","examples":["The caller asked about a late delivery and was given a new date."]},{"type":"enum","name":"customer_sentiment","description":"Overall sentiment of the caller.","system_prompt":"Classify the caller's overall sentiment.","choices":["positive","neutral","negative"]}],"uniqueKey":"post_call_analysis.oneOf.1","typeLabel":"null"}],"uniqueKey":"post_call_analysis","typeLabel":"PostCallAnalysisItem · object[] | null"},"pronunciations":{"oneOf":[{"type":"array","items":{"type":"object","title":"Pronunciation","description":"Pronunciation override applied by the voice pipeline. Simple agents only.","properties":{"id":{"oneOf":[{"type":"string","title":"Id","description":"Client-supplied identifier for the entry.","example":"r1","uniqueKey":"pronunciations.oneOf.0.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Id","description":"Client-supplied identifier for the entry.","example":"r1","uniqueKey":"pronunciations.oneOf.0.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"pronunciations.oneOf.0.items.[INDEX].id","typeLabel":"string | null"},"term":{"oneOf":[{"type":"string","title":"Term","description":"Word or phrase to override, as it appears in the agent's text.","example":"API","uniqueKey":"pronunciations.oneOf.0.items.[INDEX].term.oneOf.0","typeLabel":"string"},{"type":"null","title":"Term","description":"Word or phrase to override, as it appears in the agent's text.","example":"API","uniqueKey":"pronunciations.oneOf.0.items.[INDEX].term.oneOf.1","typeLabel":"null"}],"uniqueKey":"pronunciations.oneOf.0.items.[INDEX].term","typeLabel":"string | null"},"replacement":{"oneOf":[{"type":"string","title":"Replacement","description":"What the agent speaks instead of `term`.","example":"ay pee eye","uniqueKey":"pronunciations.oneOf.0.items.[INDEX].replacement.oneOf.0","typeLabel":"string"},{"type":"null","title":"Replacement","description":"What the agent speaks instead of `term`.","example":"ay pee eye","uniqueKey":"pronunciations.oneOf.0.items.[INDEX].replacement.oneOf.1","typeLabel":"null"}],"uniqueKey":"pronunciations.oneOf.0.items.[INDEX].replacement","typeLabel":"string | null"}},"uniqueKey":"pronunciations.oneOf.0.items.[INDEX]","typeLabel":"Pronunciation · object"},"title":"Pronunciations","description":"Pronunciation overrides: the agent speaks each `term` as its `replacement`. Applied to `simple` agents only. Entries are stored as sent, without validation.","uniqueKey":"pronunciations.oneOf.0","typeLabel":"Pronunciation · object[]"},{"type":"null","title":"Pronunciations","description":"Pronunciation overrides: the agent speaks each `term` as its `replacement`. Applied to `simple` agents only. Entries are stored as sent, without validation.","uniqueKey":"pronunciations.oneOf.1","typeLabel":"null"}],"uniqueKey":"pronunciations","typeLabel":"Pronunciation · object[] | null"},"agent_name":{"oneOf":[{"type":"string","title":"Agent Name","description":"New name for the agent, 2–200 characters. Omit it to keep the current name.","maxLength":200,"minLength":2,"uniqueKey":"agent_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Agent Name","description":"New name for the agent, 2–200 characters. Omit it to keep the current name.","uniqueKey":"agent_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_name","typeLabel":"string | null"},"llm":{"oneOf":[{"type":"object","title":"LlmConfig","description":"Changes to the language model configuration. Omitted fields keep their stored values. Send `llm_id` to change the model; `model_provider`, `model_name` and `model_display_name` return `400`.","properties":{"llm_id":{"oneOf":[{"type":"string","title":"Llm Id","description":"Id of an entry in the LLM model catalog. Required on create for `simple` agents. For `flow` agents the flow-default id lives at `graph_data.agentDefaults.llm.llm_id` instead.","uniqueKey":"llm.oneOf.0.llm_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Llm Id","description":"Id of an entry in the LLM model catalog. Required on create for `simple` agents. For `flow` agents the flow-default id lives at `graph_data.agentDefaults.llm.llm_id` instead.","uniqueKey":"llm.oneOf.0.llm_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.llm_id","typeLabel":"string | null"},"llm_type":{"type":"string","enum":["simple","agentic","flow"],"title":"Llm Type","description":"Required on create. `agentic` is rejected on create (existing agentic agents remain updatable).","uniqueKey":"llm.oneOf.0.llm_type","typeLabel":"enum\u003cstring>"},"system_prompt":{"oneOf":[{"type":"string","title":"System Prompt","description":"The base prompt that defines the agent's behavior and role. Used by `simple` agents; flow agents carry their prompts inside `graph_data`.","example":"You are a helpful support assistant for Acme. Answer briefly and politely.","uniqueKey":"llm.oneOf.0.system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"System Prompt","description":"The base prompt that defines the agent's behavior and role. Used by `simple` agents; flow agents carry their prompts inside `graph_data`.","example":"You are a helpful support assistant for Acme. Answer briefly and politely.","uniqueKey":"llm.oneOf.0.system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.system_prompt","typeLabel":"string | null"},"graph_data":{"oneOf":[{"type":"object","title":"Graph Data","description":"Conversation graph for `flow` agents: `entryNodeId`, `nodes`, `edges`, `variables`, `globalNodeIds`, `agentDefaults`, `language`. The server fills provider/model/voice names into the graph from the catalogs before validating it.","uniqueKey":"llm.oneOf.0.graph_data.oneOf.0","typeLabel":"Graph Data · object"},{"type":"null","title":"Graph Data","description":"Conversation graph for `flow` agents: `entryNodeId`, `nodes`, `edges`, `variables`, `globalNodeIds`, `agentDefaults`, `language`. The server fills provider/model/voice names into the graph from the catalogs before validating it.","uniqueKey":"llm.oneOf.0.graph_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.graph_data","typeLabel":"Graph Data · object | null"},"tools":{"oneOf":[{"type":"array","items":{"additionalProperties":{"type":"string","uniqueKey":"llm.oneOf.0.tools.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"string"},"type":"object","uniqueKey":"llm.oneOf.0.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Tools","description":"List of tools or functions available to the LLM for external interactions. Each entry is a map of string keys to string values. Tools also have their own APIs: [Built-in tools](/api-reference/built-in-tools/list-built-in-tools) and [Custom tools](/api-reference/custom-tools/list-custom-tools).","uniqueKey":"llm.oneOf.0.tools.oneOf.0","typeLabel":"Tools · object[]"},{"type":"null","title":"Tools","description":"List of tools or functions available to the LLM for external interactions. Each entry is a map of string keys to string values. Tools also have their own APIs: [Built-in tools](/api-reference/built-in-tools/list-built-in-tools) and [Custom tools](/api-reference/custom-tools/list-custom-tools).","uniqueKey":"llm.oneOf.0.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.tools","typeLabel":"Tools · object[] | null"},"required_dynamic_data":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"llm.oneOf.0.required_dynamic_data.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Required Dynamic Data","description":"List of dynamic data fields the LLM requires for operation.","example":["customer_name","order_id"],"uniqueKey":"llm.oneOf.0.required_dynamic_data.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Required Dynamic Data","description":"List of dynamic data fields the LLM requires for operation.","example":["customer_name","order_id"],"uniqueKey":"llm.oneOf.0.required_dynamic_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.required_dynamic_data","typeLabel":"string[] | null"},"llm_name":{"oneOf":[{"type":"string","title":"Llm Name","description":"Resolved from the catalog; read-only in practice.","uniqueKey":"llm.oneOf.0.llm_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Llm Name","description":"Resolved from the catalog; read-only in practice.","uniqueKey":"llm.oneOf.0.llm_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.llm_name","typeLabel":"string | null"},"llm_description":{"oneOf":[{"type":"string","title":"Llm Description","description":"Resolved from the catalog.","uniqueKey":"llm.oneOf.0.llm_description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Llm Description","description":"Resolved from the catalog.","uniqueKey":"llm.oneOf.0.llm_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.llm_description","typeLabel":"string | null"},"model_provider":{"oneOf":[{"type":"string","title":"Model Provider","description":"Resolved from the catalog, e.g. `openai`, `anthropic`, `verbex`, `openai_compatible`.","uniqueKey":"llm.oneOf.0.model_provider.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Provider","description":"Resolved from the catalog, e.g. `openai`, `anthropic`, `verbex`, `openai_compatible`.","uniqueKey":"llm.oneOf.0.model_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.model_provider","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","description":"Resolved from the catalog, e.g. `gpt-4o-mini`.","uniqueKey":"llm.oneOf.0.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","description":"Resolved from the catalog, e.g. `gpt-4o-mini`.","uniqueKey":"llm.oneOf.0.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.model_name","typeLabel":"string | null"},"model_display_name":{"oneOf":[{"type":"string","title":"Model Display Name","description":"Resolved from the catalog.","uniqueKey":"llm.oneOf.0.model_display_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Display Name","description":"Resolved from the catalog.","uniqueKey":"llm.oneOf.0.model_display_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.model_display_name","typeLabel":"string | null"},"model_temperature":{"oneOf":[{"type":"number","title":"Model Temperature","description":"The agent's own sampling temperature. On create, an omitted value takes the catalog model's temperature; a sent value, `0` included, is stored as is. On update, an omitted value keeps the stored one, even when `llm_id` changes. The service enforces no bounds; the console allows `0`–`2`.","uniqueKey":"llm.oneOf.0.model_temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Model Temperature","description":"The agent's own sampling temperature. On create, an omitted value takes the catalog model's temperature; a sent value, `0` included, is stored as is. On update, an omitted value keeps the stored one, even when `llm_id` changes. The service enforces no bounds; the console allows `0`–`2`.","uniqueKey":"llm.oneOf.0.model_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.model_temperature","typeLabel":"number | null"},"max_tokens":{"oneOf":[{"type":"integer","title":"Max Tokens","description":"Filled from the LLM model catalog whenever the model is resolved.","uniqueKey":"llm.oneOf.0.max_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Tokens","description":"Filled from the LLM model catalog whenever the model is resolved.","uniqueKey":"llm.oneOf.0.max_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm.oneOf.0.max_tokens","typeLabel":"integer | null"}},"uniqueKey":"llm.oneOf.0","typeLabel":"LlmConfig · object"},{"type":"null","description":"Changes to the language model configuration. Omitted fields keep their stored values. Send `llm_id` to change the model; `model_provider`, `model_name` and `model_display_name` return `400`.","uniqueKey":"llm.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm","typeLabel":"LlmConfig · object | null"},"stt":{"oneOf":[{"type":"object","title":"SttConfig","description":"Changes to the speech-to-text configuration. Omitted fields keep their stored values. Send `provider_id` and `model_id` together to change the model.","properties":{"provider_id":{"oneOf":[{"type":"string","title":"Provider Id","description":"Id of an entry in the STT provider catalog (`GET /v3/stt/providers`).","uniqueKey":"stt.oneOf.0.provider_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider Id","description":"Id of an entry in the STT provider catalog (`GET /v3/stt/providers`).","uniqueKey":"stt.oneOf.0.provider_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.provider_id","typeLabel":"string | null"},"model_id":{"oneOf":[{"type":"string","title":"Model Id","description":"Id of a model offered by that provider. Required on create for non-flow agents.","uniqueKey":"stt.oneOf.0.model_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Id","description":"Id of a model offered by that provider. Required on create for non-flow agents.","uniqueKey":"stt.oneOf.0.model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.model_id","typeLabel":"string | null"},"provider":{"oneOf":[{"type":"string","title":"Provider","description":"Resolved provider name, e.g. `deepgram`. v2 input field; on v3 it is filled in by the server.","uniqueKey":"stt.oneOf.0.provider.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider","description":"Resolved provider name, e.g. `deepgram`. v2 input field; on v3 it is filled in by the server.","uniqueKey":"stt.oneOf.0.provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.provider","typeLabel":"string | null"},"model":{"oneOf":[{"type":"string","title":"Model","description":"Resolved model name, e.g. `nova-2-phonecall`.","uniqueKey":"stt.oneOf.0.model.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model","description":"Resolved model name, e.g. `nova-2-phonecall`.","uniqueKey":"stt.oneOf.0.model.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.model","typeLabel":"string | null"},"language":{"oneOf":[{"type":"string","title":"Language","description":"BCP-47 language code for recognition.","uniqueKey":"stt.oneOf.0.language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"BCP-47 language code for recognition.","uniqueKey":"stt.oneOf.0.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.language","typeLabel":"string | null"},"context_prompt":{"oneOf":[{"type":"string","title":"Context Prompt","description":"Context biasing prompt. Honored only by providers that support it.","uniqueKey":"stt.oneOf.0.context_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Context Prompt","description":"Context biasing prompt. Honored only by providers that support it.","uniqueKey":"stt.oneOf.0.context_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.context_prompt","typeLabel":"string | null"},"bias_prompt":{"oneOf":[{"type":"string","title":"Bias Prompt","description":"Context biasing instruction. Honored only by providers that support it.","uniqueKey":"stt.oneOf.0.bias_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Bias Prompt","description":"Context biasing instruction. Honored only by providers that support it.","uniqueKey":"stt.oneOf.0.bias_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.bias_prompt","typeLabel":"string | null"},"hotwords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"stt.oneOf.0.hotwords.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Hotwords","description":"Terms to bias recognition toward. Honored only by providers that support it.","uniqueKey":"stt.oneOf.0.hotwords.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Hotwords","description":"Terms to bias recognition toward. Honored only by providers that support it.","uniqueKey":"stt.oneOf.0.hotwords.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.hotwords","typeLabel":"string[] | null"},"configuration":{"oneOf":[{"type":"string","title":"Configuration","description":"Additional provider-specific configuration.","uniqueKey":"stt.oneOf.0.configuration.oneOf.0","typeLabel":"string"},{"type":"null","title":"Configuration","description":"Additional provider-specific configuration.","uniqueKey":"stt.oneOf.0.configuration.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt.oneOf.0.configuration","typeLabel":"string | null"}},"uniqueKey":"stt.oneOf.0","typeLabel":"SttConfig · object"},{"type":"null","description":"Changes to the speech-to-text configuration. Omitted fields keep their stored values. Send `provider_id` and `model_id` together to change the model.","uniqueKey":"stt.oneOf.1","typeLabel":"null"}],"uniqueKey":"stt","typeLabel":"SttConfig · object | null"},"tts":{"oneOf":[{"type":"object","title":"TtsConfig","description":"Changes to the text-to-speech configuration. Omitted fields keep their stored values. Send `provider_id` and `voice_id` together to change the voice.","properties":{"provider_id":{"oneOf":[{"type":"string","title":"Provider Id","description":"Id of an entry in the TTS provider catalog (`GET /v3/tts/providers`).","uniqueKey":"tts.oneOf.0.provider_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider Id","description":"Id of an entry in the TTS provider catalog (`GET /v3/tts/providers`).","uniqueKey":"tts.oneOf.0.provider_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.provider_id","typeLabel":"string | null"},"voice_id":{"oneOf":[{"type":"string","title":"Voice Id","description":"Id of a voice offered by that provider. Required on create for non-flow agents. A voice is listed once per language it supports, so the same `voice_id` can appear under several language codes.","uniqueKey":"tts.oneOf.0.voice_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Voice Id","description":"Id of a voice offered by that provider. Required on create for non-flow agents. A voice is listed once per language it supports, so the same `voice_id` can appear under several language codes.","uniqueKey":"tts.oneOf.0.voice_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.voice_id","typeLabel":"string | null"},"provider":{"oneOf":[{"type":"string","title":"Provider","description":"Resolved provider name, e.g. `elevenlabs`.","uniqueKey":"tts.oneOf.0.provider.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider","description":"Resolved provider name, e.g. `elevenlabs`.","uniqueKey":"tts.oneOf.0.provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.provider","typeLabel":"string | null"},"voice_name":{"oneOf":[{"type":"string","title":"Voice Name","description":"Resolved voice name.","uniqueKey":"tts.oneOf.0.voice_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Voice Name","description":"Resolved voice name.","uniqueKey":"tts.oneOf.0.voice_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.voice_name","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","description":"Resolved synthesis model name. On this catalog the model hangs off the individual voice, not the provider.","uniqueKey":"tts.oneOf.0.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","description":"Resolved synthesis model name. On this catalog the model hangs off the individual voice, not the provider.","uniqueKey":"tts.oneOf.0.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.model_name","typeLabel":"string | null"},"voice_temperature":{"oneOf":[{"type":"number","title":"Voice Temperature","description":"Controls the randomness in voice generation, `0`–`2`. Lower values produce more consistent output, higher values add more variation.","default":0.2,"maximum":2,"minimum":0,"uniqueKey":"tts.oneOf.0.voice_temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Voice Temperature","description":"Controls the randomness in voice generation, `0`–`2`. Lower values produce more consistent output, higher values add more variation.","default":0.2,"uniqueKey":"tts.oneOf.0.voice_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.voice_temperature","typeLabel":"number | null"},"language":{"oneOf":[{"type":"string","title":"Language","description":"BCP-47 language code for synthesis.","uniqueKey":"tts.oneOf.0.language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"BCP-47 language code for synthesis.","uniqueKey":"tts.oneOf.0.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts.oneOf.0.language","typeLabel":"string | null"}},"uniqueKey":"tts.oneOf.0","typeLabel":"TtsConfig · object"},{"type":"null","description":"Changes to the text-to-speech configuration. Omitted fields keep their stored values. Send `provider_id` and `voice_id` together to change the voice.","uniqueKey":"tts.oneOf.1","typeLabel":"null"}],"uniqueKey":"tts","typeLabel":"TtsConfig · object | null"},"agent_status":{"oneOf":[{"type":"string","title":"Agent Status","description":"New lifecycle status. Omit it to keep the current status.","enum":["ACTIVE","INACTIVE"],"uniqueKey":"agent_status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Agent Status","description":"New lifecycle status. Omit it to keep the current status.","uniqueKey":"agent_status.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_status","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"","typeLabel":"UpdateAIAgentV3Request · object"},"examples":{"rename":{"title":"rename","value":{"agent_name":"Tier-1 Support Agent"}},"swap_voice":{"title":"swap_voice","value":{"tts":{"provider_id":"6a5c079f814b8ed08b15172b","voice_id":"EXAVITQu4vr4xnSDxMaL"}}},"full":{"title":"full","value":{"agent_name":"Customer Support Agent","language_code":"en-US","agent_status":"ACTIVE","llm":{"llm_id":"9d259647-d5ec-423d-96a9-2750980e8ecb","llm_type":"simple","system_prompt":"You are a helpful customer support assistant.","model_temperature":0.1},"stt":{"provider_id":"6a5c45808d2d94e9d0e255d3","model_id":"af97a5f7-0f10-4eb3-a915-f7fe95a050f8"},"tts":{"provider_id":"6a5c079f814b8ed08b15172b","voice_id":"IKne3meq5aSn9XLyUdCD","voice_temperature":1},"speech_speed":0.9,"vad_activation_threshold":0.4,"knowledge_base_id":"kb-123456","enable_user_interruptions":true,"minimum_speech_duration_for_interruptions":0.5,"minimum_words_before_interruption":2,"interruption_mode":"vad","ambient_sound":"office","ambient_sound_volume":1,"webhook_url":"https://api.example.com/webhooks/call-events","end_call_after_silence_seconds":20,"max_call_duration_seconds":600,"welcome_message":"Hello! Thanks for calling. How can I help you today?","end_call_instruction":"End the call politely once the issue is resolved.","amd_voicemail_message":"Sorry we missed you. Please call us back.","voicemail_detection_timeout_seconds":5,"agent_ended_call_delay_seconds":1,"welcome_message_delay_in_seconds":0.5,"enable_amd":true,"silence_reminder_enabled":true,"silence_reminder_duration_seconds":15,"max_number_of_silence_reminders":3,"interval_between_silence_reminders_seconds":10,"enable_noise_cancellation":true,"dynamic_data_config":[{"name":"customer_data","url":"https://api.example.com/customer-data","method":"GET","timeout":2000,"cache":true,"response_data":[{"name":"customer_name","data":"$.customer.name","context":"Customer's full name for personalization"}]}],"post_call_analysis":[{"type":"string","name":"call_summary","description":"A brief summary of the call and key points.","examples":["Customer asked about billing; issue resolved."]}],"pronunciations":[{"id":"r1","term":"API","replacement":"ay pee eye"}]}},"flow_graph":{"title":"flow_graph","description":"`graph_data` replaces the stored graph as a whole, so send the complete graph. `llm.llm_type` is required whenever `graph_data` is sent.","value":{"llm":{"llm_type":"flow","graph_data":{"entryNodeId":"node-start","nodes":[{"id":"node-start","type":"start","position":{"x":300,"y":50},"data":{"label":"Start","userAwayTimeoutSec":30,"maxToolSteps":3}},{"id":"conv","type":"conversation","position":{"x":300,"y":200},"data":{"label":"Conversation","mode":"full","instructions":"You are a helpful assistant.","openingMessage":{"type":"llm-generated","instructions":"Greet the user and ask how you can help."},"modelConfig":{"stt":{"source":"flow-default"},"llm":{"source":"flow-default"},"tts":{"source":"flow-default"}},"allowEndCall":true}},{"id":"end","type":"end-call","position":{"x":300,"y":350},"data":{"label":"End call","farewellMessage":{"type":"none"}}}],"edges":[{"id":"e1","source":"node-start","target":"conv","label":"Start","kind":"session-start","contextPassing":"full"},{"id":"e2","source":"conv","target":"end","label":"End Call","kind":"conditional-edge","decisionType":"llm","promptCondition":"When the user wants to end the call","contextPassing":"full"}],"variables":[],"globalNodeIds":[],"agentDefaults":{"stt":{"provider_id":"6a5c45808d2d94e9d0e255d3","model_id":"aec2493a-eba9-48d0-9e64-4aab4437f7f5"},"llm":{"llm_id":"d6847c0b-179f-4910-b4f5-a1bee9807a57"},"tts":{"provider_id":"6a5c079f814b8ed08b15172b","voice_id":"EXAVITQu4vr4xnSDxMaL"}},"language":"en"}}}},"flow_timing":{"title":"flow_timing","description":"`max_endpointing_delay` must stay greater than `wait_time_before_detecting_end_of_speech`.","value":{"wait_time_before_detecting_end_of_speech":0.3,"max_endpointing_delay":2.5}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"c046ea71-3502-4a3f-8e3a-8cbce696bd9c":{"description":"Agent updated","content":{"application/json":{"schema":{"type":"object","title":"ApiResponse\u003cAIAgent>","description":"Standard v3 envelope. `error_details` is present only on failures; null fields are omitted.","properties":{"status":{"type":"string","enum":["success","error"],"title":"Status","description":"Outcome of the request: `success` or `error`, in lowercase.","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Human-readable message about the result.","uniqueKey":"message","typeLabel":"string"},"data":{"type":"object","title":"AIAgentV3Response","description":"The agent. Omitted on errors.","required":["ai_agent_id"],"properties":{"ai_agent_id":{"type":"string","title":"Ai Agent Id","description":"Unique identifier for the AI agent.","isRequired":true,"uniqueKey":"data.ai_agent_id","typeLabel":"string"},"language_code":{"oneOf":[{"type":"string","title":"Language Code","description":"BCP-47 language code for the agent, for example `en-US`.","uniqueKey":"data.language_code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language Code","description":"BCP-47 language code for the agent, for example `en-US`.","uniqueKey":"data.language_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.language_code","typeLabel":"string | null"},"timezone":{"oneOf":[{"type":"string","title":"Timezone","description":"Canonical IANA time zone the agent reads its clock in, e.g. 'Asia/Tokyo'. Rejected if it is not a tzdb name: abbreviations (JST), UTC offsets (+09:00) and city-only strings (Tokyo) are not accepted. Omitted or null leaves the agent without a timezone; there is no default.","uniqueKey":"data.timezone.oneOf.0","typeLabel":"string"},{"type":"null","title":"Timezone","description":"Canonical IANA time zone the agent reads its clock in, e.g. 'Asia/Tokyo'. Rejected if it is not a tzdb name: abbreviations (JST), UTC offsets (+09:00) and city-only strings (Tokyo) are not accepted. Omitted or null leaves the agent without a timezone; there is no default.","uniqueKey":"data.timezone.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.timezone","typeLabel":"string | null"},"speech_speed":{"oneOf":[{"type":"number","title":"Speech Speed","description":"Speaking-rate multiplier for the agent's audio: 1.0 is normal, below 1.0 slower, above 1.0 faster.","default":1,"maximum":2,"minimum":0.5,"uniqueKey":"data.speech_speed.oneOf.0","typeLabel":"number"},{"type":"null","title":"Speech Speed","description":"Speaking-rate multiplier for the agent's audio: 1.0 is normal, below 1.0 slower, above 1.0 faster.","default":1,"uniqueKey":"data.speech_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.speech_speed","typeLabel":"number | null"},"knowledge_base_id":{"oneOf":[{"type":"string","title":"Knowledge Base Id","description":"Knowledge base the agent retrieves from.","uniqueKey":"data.knowledge_base_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Knowledge Base Id","description":"Knowledge base the agent retrieves from.","uniqueKey":"data.knowledge_base_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.knowledge_base_id","typeLabel":"string | null"},"welcome_message":{"oneOf":[{"type":"string","title":"Welcome Message","description":"Custom message the agent speaks when the call begins.","example":"Hello! Thanks for calling. How can I help you today?","uniqueKey":"data.welcome_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Welcome Message","description":"Custom message the agent speaks when the call begins.","example":"Hello! Thanks for calling. How can I help you today?","uniqueKey":"data.welcome_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.welcome_message","typeLabel":"string | null"},"welcome_message_delay_in_seconds":{"oneOf":[{"type":"number","title":"Welcome Message Delay In Seconds","description":"Delay in seconds, `0`–`10`, before the agent speaks the welcome message.","default":2,"maximum":10,"minimum":0,"uniqueKey":"data.welcome_message_delay_in_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Welcome Message Delay In Seconds","description":"Delay in seconds, `0`–`10`, before the agent speaks the welcome message.","default":2,"uniqueKey":"data.welcome_message_delay_in_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.welcome_message_delay_in_seconds","typeLabel":"number | null"},"enable_user_interruptions":{"oneOf":[{"type":"boolean","title":"Enable User Interruptions","description":"Whether the caller can interrupt the agent while it is speaking.","default":true,"uniqueKey":"data.enable_user_interruptions.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enable User Interruptions","description":"Whether the caller can interrupt the agent while it is speaking.","default":true,"uniqueKey":"data.enable_user_interruptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.enable_user_interruptions","typeLabel":"boolean | null"},"interruption_mode":{"oneOf":[{"type":"string","title":"Interruption Mode","description":"Interruption detection strategy. Null when unset.","enum":["vad","adaptive"],"uniqueKey":"data.interruption_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Interruption Mode","description":"Interruption detection strategy. Null when unset.","uniqueKey":"data.interruption_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.interruption_mode","typeLabel":"enum\u003cstring> | null"},"minimum_speech_duration_for_interruptions":{"oneOf":[{"type":"number","title":"Minimum Speech Duration For Interruptions","description":"Seconds of speech before an interruption is accepted. Minimum 0.5 on create; 0.0 is accepted on update.","default":0.5,"maximum":15,"minimum":0.5,"uniqueKey":"data.minimum_speech_duration_for_interruptions.oneOf.0","typeLabel":"number"},{"type":"null","title":"Minimum Speech Duration For Interruptions","description":"Seconds of speech before an interruption is accepted. Minimum 0.5 on create; 0.0 is accepted on update.","default":0.5,"uniqueKey":"data.minimum_speech_duration_for_interruptions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.minimum_speech_duration_for_interruptions","typeLabel":"number | null"},"minimum_words_before_interruption":{"oneOf":[{"type":"integer","title":"Minimum Words Before Interruption","description":"Minimum number of words, `0`–`10`, the caller must say before the agent treats the speech as an interruption. Used when `enable_user_interruptions` is `true`.","default":2,"maximum":10,"minimum":0,"uniqueKey":"data.minimum_words_before_interruption.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Minimum Words Before Interruption","description":"Minimum number of words, `0`–`10`, the caller must say before the agent treats the speech as an interruption. Used when `enable_user_interruptions` is `true`.","default":2,"uniqueKey":"data.minimum_words_before_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.minimum_words_before_interruption","typeLabel":"integer | null"},"vad_activation_threshold":{"oneOf":[{"type":"number","title":"Vad Activation Threshold","description":"Voice activity detection sensitivity, `0.10`–`0.90`. There is no service-side default: when unset, the call handler uses its own per-language default, and the key is omitted from create, get and update responses. On update, omitting the key keeps the stored value.","maximum":0.9,"minimum":0.1,"uniqueKey":"data.vad_activation_threshold.oneOf.0","typeLabel":"number"},{"type":"null","title":"Vad Activation Threshold","description":"Voice activity detection sensitivity, `0.10`–`0.90`. There is no service-side default: when unset, the call handler uses its own per-language default, and the key is omitted from create, get and update responses. On update, omitting the key keeps the stored value.","uniqueKey":"data.vad_activation_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.vad_activation_threshold","typeLabel":"number | null"},"wait_time_before_detecting_end_of_speech":{"oneOf":[{"type":"number","title":"Wait Time Before Detecting End Of Speech","description":"Seconds of silence before the caller's turn is treated as finished. **Flow agents only**: when omitted on create, a flow agent gets `0.2`. Other agent types ignore the value: create stores nothing and update keeps whatever was stored.","maximum":15,"minimum":0,"uniqueKey":"data.wait_time_before_detecting_end_of_speech.oneOf.0","typeLabel":"number"},{"type":"null","title":"Wait Time Before Detecting End Of Speech","description":"Seconds of silence before the caller's turn is treated as finished. **Flow agents only**: when omitted on create, a flow agent gets `0.2`. Other agent types ignore the value: create stores nothing and update keeps whatever was stored.","uniqueKey":"data.wait_time_before_detecting_end_of_speech.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.wait_time_before_detecting_end_of_speech","typeLabel":"number | null"},"max_endpointing_delay":{"oneOf":[{"type":"number","title":"Max Endpointing Delay","description":"Upper bound, in seconds, on how long end-of-speech detection may wait. **Flow agents only**: when omitted on create, a flow agent gets `2.0`. It must be greater than `wait_time_before_detecting_end_of_speech`, otherwise the request returns `422`. Other agent types ignore the value.","maximum":15,"minimum":0,"uniqueKey":"data.max_endpointing_delay.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Endpointing Delay","description":"Upper bound, in seconds, on how long end-of-speech detection may wait. **Flow agents only**: when omitted on create, a flow agent gets `2.0`. It must be greater than `wait_time_before_detecting_end_of_speech`, otherwise the request returns `422`. Other agent types ignore the value.","uniqueKey":"data.max_endpointing_delay.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.max_endpointing_delay","typeLabel":"number | null"},"ambient_sound":{"oneOf":[{"type":"string","title":"Ambient Sound","description":"Background sound mixed into the call audio. `none` adds no sound.","default":"none","enum":["office","cafe","restaurant","park","street","home","library","airport","train_station","beach","none"],"uniqueKey":"data.ambient_sound.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Ambient Sound","description":"Background sound mixed into the call audio. `none` adds no sound.","default":"none","uniqueKey":"data.ambient_sound.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.ambient_sound","typeLabel":"enum\u003cstring> | null"},"ambient_sound_volume":{"oneOf":[{"type":"number","title":"Ambient Sound Volume","description":"Volume of the ambient sound, `0`–`2`, where `1` is normal volume.","default":1,"maximum":2,"minimum":0,"uniqueKey":"data.ambient_sound_volume.oneOf.0","typeLabel":"number"},{"type":"null","title":"Ambient Sound Volume","description":"Volume of the ambient sound, `0`–`2`, where `1` is normal volume.","default":1,"uniqueKey":"data.ambient_sound_volume.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.ambient_sound_volume","typeLabel":"number | null"},"enable_noise_cancellation":{"oneOf":[{"type":"boolean","title":"Enable Noise Cancellation","description":"Whether to apply noise cancellation to the caller's audio before speech recognition.","default":true,"uniqueKey":"data.enable_noise_cancellation.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enable Noise Cancellation","description":"Whether to apply noise cancellation to the caller's audio before speech recognition.","default":true,"uniqueKey":"data.enable_noise_cancellation.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.enable_noise_cancellation","typeLabel":"boolean | null"},"webhook_url":{"oneOf":[{"type":"string","title":"Webhook Url","description":"Receives webhook notifications about call events.","uniqueKey":"data.webhook_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Webhook Url","description":"Receives webhook notifications about call events.","uniqueKey":"data.webhook_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.webhook_url","typeLabel":"string | null"},"end_call_after_silence_seconds":{"oneOf":[{"type":"integer","title":"End Call After Silence Seconds","description":"Seconds of caller silence, `10`–`30`, after which the call ends automatically.","default":10,"maximum":30,"minimum":10,"uniqueKey":"data.end_call_after_silence_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"End Call After Silence Seconds","description":"Seconds of caller silence, `10`–`30`, after which the call ends automatically.","default":10,"uniqueKey":"data.end_call_after_silence_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.end_call_after_silence_seconds","typeLabel":"integer | null"},"max_call_duration_seconds":{"oneOf":[{"type":"integer","title":"Max Call Duration Seconds","description":"Maximum duration of the call in seconds, `30`–`3600`.","default":1800,"maximum":3600,"minimum":30,"uniqueKey":"data.max_call_duration_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Call Duration Seconds","description":"Maximum duration of the call in seconds, `30`–`3600`.","default":1800,"uniqueKey":"data.max_call_duration_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.max_call_duration_seconds","typeLabel":"integer | null"},"end_call_instruction":{"oneOf":[{"type":"string","title":"End Call Instruction","description":"Instruction given to the LLM governing how and when to end the call.","uniqueKey":"data.end_call_instruction.oneOf.0","typeLabel":"string"},{"type":"null","title":"End Call Instruction","description":"Instruction given to the LLM governing how and when to end the call.","uniqueKey":"data.end_call_instruction.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.end_call_instruction","typeLabel":"string | null"},"agent_ended_call_delay_seconds":{"oneOf":[{"type":"number","title":"Agent Ended Call Delay Seconds","description":"Delay in seconds, `0`–`10`, before the call ends when the agent decides to end it.","default":2,"maximum":10,"minimum":0,"uniqueKey":"data.agent_ended_call_delay_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Agent Ended Call Delay Seconds","description":"Delay in seconds, `0`–`10`, before the call ends when the agent decides to end it.","default":2,"uniqueKey":"data.agent_ended_call_delay_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.agent_ended_call_delay_seconds","typeLabel":"number | null"},"enable_amd":{"oneOf":[{"type":"boolean","title":"Enable Amd","description":"Enable answering-machine detection.","default":false,"uniqueKey":"data.enable_amd.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enable Amd","description":"Enable answering-machine detection.","default":false,"uniqueKey":"data.enable_amd.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.enable_amd","typeLabel":"boolean | null"},"amd_voicemail_message":{"oneOf":[{"type":"string","title":"Amd Voicemail Message","description":"Played when answering-machine detection identifies a voicemail.","uniqueKey":"data.amd_voicemail_message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Amd Voicemail Message","description":"Played when answering-machine detection identifies a voicemail.","uniqueKey":"data.amd_voicemail_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.amd_voicemail_message","typeLabel":"string | null"},"voicemail_detection_timeout_seconds":{"oneOf":[{"type":"integer","title":"Voicemail Detection Timeout Seconds","description":"Seconds to wait for voicemail detection before taking action. Used when `enable_amd` is `true`.","default":90,"minimum":0,"uniqueKey":"data.voicemail_detection_timeout_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Voicemail Detection Timeout Seconds","description":"Seconds to wait for voicemail detection before taking action. Used when `enable_amd` is `true`.","default":90,"uniqueKey":"data.voicemail_detection_timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.voicemail_detection_timeout_seconds","typeLabel":"integer | null"},"silence_reminder_enabled":{"oneOf":[{"type":"boolean","title":"Silence Reminder Enabled","description":"Whether the agent reminds the caller to speak after a period of silence.","default":false,"uniqueKey":"data.silence_reminder_enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Silence Reminder Enabled","description":"Whether the agent reminds the caller to speak after a period of silence.","default":false,"uniqueKey":"data.silence_reminder_enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.silence_reminder_enabled","typeLabel":"boolean | null"},"silence_reminder_duration_seconds":{"oneOf":[{"type":"number","title":"Silence Reminder Duration Seconds","description":"Seconds of silence, `10`–`30`, before the agent reminds the caller to speak. Used when `silence_reminder_enabled` is `true`.","default":10,"maximum":30,"minimum":10,"uniqueKey":"data.silence_reminder_duration_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Silence Reminder Duration Seconds","description":"Seconds of silence, `10`–`30`, before the agent reminds the caller to speak. Used when `silence_reminder_enabled` is `true`.","default":10,"uniqueKey":"data.silence_reminder_duration_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.silence_reminder_duration_seconds","typeLabel":"number | null"},"max_number_of_silence_reminders":{"oneOf":[{"type":"integer","title":"Max Number Of Silence Reminders","description":"Maximum number of silence reminders, `1`–`10`. Used when `silence_reminder_enabled` is `true`.","default":3,"maximum":10,"minimum":1,"uniqueKey":"data.max_number_of_silence_reminders.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Number Of Silence Reminders","description":"Maximum number of silence reminders, `1`–`10`. Used when `silence_reminder_enabled` is `true`.","default":3,"uniqueKey":"data.max_number_of_silence_reminders.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.max_number_of_silence_reminders","typeLabel":"integer | null"},"interval_between_silence_reminders_seconds":{"oneOf":[{"type":"number","title":"Interval Between Silence Reminders Seconds","description":"Seconds between two consecutive silence reminders, `3`–`30`. Used when `silence_reminder_enabled` is `true`.","default":10,"maximum":30,"minimum":3,"uniqueKey":"data.interval_between_silence_reminders_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Interval Between Silence Reminders Seconds","description":"Seconds between two consecutive silence reminders, `3`–`30`. Used when `silence_reminder_enabled` is `true`.","default":10,"uniqueKey":"data.interval_between_silence_reminders_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.interval_between_silence_reminders_seconds","typeLabel":"number | null"},"dynamic_data_config":{"oneOf":[{"type":"array","items":{"type":"object","title":"DynamicDataConfigItem","description":"An external HTTP call the agent makes to fetch data during a call.","properties":{"name":{"oneOf":[{"type":"string","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].description","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].url","typeLabel":"string | null"},"method":{"oneOf":[{"type":"string","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].method.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].method","typeLabel":"string | null"},"timeout":{"oneOf":[{"type":"integer","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"minimum":1000,"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].timeout.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].timeout","typeLabel":"integer | null"},"headers":{"oneOf":[{"type":"object","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"additionalProperties":{"type":"string","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].headers.oneOf.0","typeLabel":"Headers · object"},{"type":"null","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].headers","typeLabel":"Headers · object | null"},"body":{"oneOf":[{"type":"object","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].body.oneOf.0","typeLabel":"Body · object"},{"type":"null","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].body.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].body","typeLabel":"Body · object | null"},"query":{"oneOf":[{"type":"object","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].query.oneOf.0","typeLabel":"Query · object"},{"type":"null","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].query.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].query","typeLabel":"Query · object | null"},"cache":{"oneOf":[{"type":"boolean","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].cache.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].cache.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].cache","typeLabel":"boolean | null"},"enabled":{"oneOf":[{"type":"boolean","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean | null"},"config":{"oneOf":[{"type":"string","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].config.oneOf.0","typeLabel":"string"},{"type":"null","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].config.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].config","typeLabel":"string | null"},"response_data":{"oneOf":[{"type":"array","items":{"type":"object","title":"ResponseDataItem","properties":{"name":{"type":"string","title":"Name","description":"Unique name for this extracted field.","examples":["customer_name"],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].name","typeLabel":"string"},"data":{"type":"string","title":"Data","description":"JSONPath expression selecting the value.","examples":["$.customer.name"],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].data","typeLabel":"string"},"context":{"oneOf":[{"type":"string","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].context.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX].context","typeLabel":"string | null"}},"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0.items.[INDEX]","typeLabel":"ResponseDataItem · object"},"title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.0","typeLabel":"ResponseDataItem · object[]"},{"type":"null","title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX].response_data","typeLabel":"ResponseDataItem · object[] | null"}},"uniqueKey":"data.dynamic_data_config.oneOf.0.items.[INDEX]","typeLabel":"DynamicDataConfigItem · object"},"title":"Dynamic Data Config","description":"External HTTP sources the agent calls to fetch data during the conversation, for example a customer record. See [Dynamic data](/external_context/dynamic_data).","uniqueKey":"data.dynamic_data_config.oneOf.0","typeLabel":"DynamicDataConfigItem · object[]"},{"type":"null","title":"Dynamic Data Config","description":"External HTTP sources the agent calls to fetch data during the conversation, for example a customer record. See [Dynamic data](/external_context/dynamic_data).","uniqueKey":"data.dynamic_data_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.dynamic_data_config","typeLabel":"DynamicDataConfigItem · object[] | null"},"post_call_analysis":{"oneOf":[{"type":"array","items":{"type":"object","title":"PostCallAnalysisItem","description":"A legacy analysis item embedded on the agent. Distinct from the post-call analysis configuration API at `/v2/ai-agents/{ai_agent_id}/postcall-analysis`.","properties":{"type":{"oneOf":[{"type":"string","title":"Type","description":"Shape of the result. `string` returns a text string, `enum` returns one value from `choices`, `boolean` returns `true` or `false`, and `number` returns a numeric value.","enum":["string","enum","boolean","number"],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Type","description":"Shape of the result. `string` returns a text string, `enum` returns one value from `choices`, `boolean` returns `true` or `false`, and `number` returns a numeric value.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].type.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring> | null"},"name":{"oneOf":[{"type":"string","title":"Name","description":"Unique identifier for this analysis item.","example":"call_summary","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Unique identifier for this analysis item.","example":"call_summary","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Detailed explanation of what this analysis item measures or determines from the call.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Detailed explanation of what this analysis item measures or determines from the call.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].description","typeLabel":"string | null"},"system_prompt":{"oneOf":[{"type":"string","title":"System Prompt","description":"Instructions for the AI on how to analyze the call and produce this item.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"System Prompt","description":"Instructions for the AI on how to analyze the call and produce this item.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].system_prompt","typeLabel":"string | null"},"examples":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].examples.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Examples","description":"Sample responses that guide the AI toward the expected answer. For `string` items.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].examples.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Examples","description":"Sample responses that guide the AI toward the expected answer. For `string` items.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].examples.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].examples","typeLabel":"string[] | null"},"choices":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].choices.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Choices","description":"The complete list of values the item can return. For `enum` items.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].choices.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Choices","description":"The complete list of values the item can return. For `enum` items.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].choices.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].choices","typeLabel":"string[] | null"},"enabled":{"oneOf":[{"type":"boolean","title":"Enabled","description":"Whether this analysis item is enabled.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enabled","description":"Whether this analysis item is enabled.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean | null"},"dynamic_data_config":{"oneOf":[{"type":"object","title":"DynamicDataConfigItem","description":"An external HTTP call the agent makes to fetch data during a call.","properties":{"name":{"oneOf":[{"type":"string","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Name of the data source. Legacy field, kept for older agents.","example":"customer_data","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"What the data source provides. Legacy field, kept for older agents.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.description","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Url","description":"The endpoint URL from which to fetch dynamic data during the conversation.","example":"https://api.example.com/customer-data","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.url","typeLabel":"string | null"},"method":{"oneOf":[{"type":"string","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Method","description":"The HTTP method to use when calling the endpoint, for example `GET`, `POST` or `PUT`.","default":"GET","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.method.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.method","typeLabel":"string | null"},"timeout":{"oneOf":[{"type":"integer","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"minimum":1000,"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.timeout.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Timeout","description":"Maximum time in milliseconds to wait for the endpoint response before timing out. Minimum `1000`.","default":2000,"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.timeout","typeLabel":"integer | null"},"headers":{"oneOf":[{"type":"object","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"additionalProperties":{"type":"string","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers.oneOf.0","typeLabel":"Headers · object"},{"type":"null","title":"Headers","description":"HTTP headers to include in the request, for example an authorization token or the content type.","example":{"Authorization":"Bearer \u003ctoken>"},"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.headers","typeLabel":"Headers · object | null"},"body":{"oneOf":[{"type":"object","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.body.oneOf.0","typeLabel":"Body · object"},{"type":"null","title":"Body","description":"Request body to send to the endpoint, for `POST` and `PUT` requests.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.body.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.body","typeLabel":"Body · object | null"},"query":{"oneOf":[{"type":"object","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.query.oneOf.0","typeLabel":"Query · object"},{"type":"null","title":"Query","description":"URL query parameters to include in the request, for `GET` requests.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.query.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.query","typeLabel":"Query · object | null"},"cache":{"oneOf":[{"type":"boolean","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.cache.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Cache","description":"Whether to cache the response data, to avoid repeated calls for the same information.","default":true,"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.cache.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.cache","typeLabel":"boolean | null"},"enabled":{"oneOf":[{"type":"boolean","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.enabled.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Enabled","description":"Whether the data source is enabled. Legacy field, kept for older agents.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.enabled.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.enabled","typeLabel":"boolean | null"},"config":{"oneOf":[{"type":"string","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.config.oneOf.0","typeLabel":"string"},{"type":"null","title":"Config","description":"Configuration payload as a JSON string. Legacy field, kept for older agents.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.config.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.config","typeLabel":"string | null"},"response_data":{"oneOf":[{"type":"array","items":{"type":"object","title":"ResponseDataItem","properties":{"name":{"type":"string","title":"Name","description":"Unique name for this extracted field.","examples":["customer_name"],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].name","typeLabel":"string"},"data":{"type":"string","title":"Data","description":"JSONPath expression selecting the value.","examples":["$.customer.name"],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].data","typeLabel":"string"},"context":{"oneOf":[{"type":"string","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Context","description":"Additional context about this field, to help the agent understand and use the value.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].context.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX].context","typeLabel":"string | null"}},"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0.items.[INDEX]","typeLabel":"ResponseDataItem · object"},"title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.0","typeLabel":"ResponseDataItem · object[]"},{"type":"null","title":"Response Data","description":"Fields to extract from the endpoint response. Each entry names a value and the JSONPath that selects it.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0.response_data","typeLabel":"ResponseDataItem · object[] | null"}},"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.0","typeLabel":"DynamicDataConfigItem · object"},{"type":"null","title":"Dynamic Data Config","description":"Dynamic data source the analysis can use.","uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX].dynamic_data_config","typeLabel":"DynamicDataConfigItem · object | null"}},"uniqueKey":"data.post_call_analysis.oneOf.0.items.[INDEX]","typeLabel":"PostCallAnalysisItem · object"},"title":"Post Call Analysis","description":"Analysis items to extract from the call after it ends. The `type` of each item sets the shape of its result. You can also manage these items with the [post-call analysis API](/api-reference/post-call-analysis/get-post-call-analysis-configuration-for-an-agent).","example":[{"type":"string","name":"call_summary","description":"A short summary of the call.","system_prompt":"Summarize the call in two sentences.","examples":["The caller asked about a late delivery and was given a new date."]},{"type":"enum","name":"customer_sentiment","description":"Overall sentiment of the caller.","system_prompt":"Classify the caller's overall sentiment.","choices":["positive","neutral","negative"]}],"uniqueKey":"data.post_call_analysis.oneOf.0","typeLabel":"PostCallAnalysisItem · object[]"},{"type":"null","title":"Post Call Analysis","description":"Analysis items to extract from the call after it ends. The `type` of each item sets the shape of its result. You can also manage these items with the [post-call analysis API](/api-reference/post-call-analysis/get-post-call-analysis-configuration-for-an-agent).","example":[{"type":"string","name":"call_summary","description":"A short summary of the call.","system_prompt":"Summarize the call in two sentences.","examples":["The caller asked about a late delivery and was given a new date."]},{"type":"enum","name":"customer_sentiment","description":"Overall sentiment of the caller.","system_prompt":"Classify the caller's overall sentiment.","choices":["positive","neutral","negative"]}],"uniqueKey":"data.post_call_analysis.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.post_call_analysis","typeLabel":"PostCallAnalysisItem · object[] | null"},"pronunciations":{"oneOf":[{"type":"array","items":{"type":"object","title":"Pronunciation","description":"Pronunciation override applied by the voice pipeline. Simple agents only.","properties":{"id":{"oneOf":[{"type":"string","title":"Id","description":"Client-supplied identifier for the entry.","example":"r1","uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Id","description":"Client-supplied identifier for the entry.","example":"r1","uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].id","typeLabel":"string | null"},"term":{"oneOf":[{"type":"string","title":"Term","description":"Word or phrase to override, as it appears in the agent's text.","example":"API","uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].term.oneOf.0","typeLabel":"string"},{"type":"null","title":"Term","description":"Word or phrase to override, as it appears in the agent's text.","example":"API","uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].term.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].term","typeLabel":"string | null"},"replacement":{"oneOf":[{"type":"string","title":"Replacement","description":"What the agent speaks instead of `term`.","example":"ay pee eye","uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].replacement.oneOf.0","typeLabel":"string"},{"type":"null","title":"Replacement","description":"What the agent speaks instead of `term`.","example":"ay pee eye","uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].replacement.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX].replacement","typeLabel":"string | null"}},"uniqueKey":"data.pronunciations.oneOf.0.items.[INDEX]","typeLabel":"Pronunciation · object"},"title":"Pronunciations","description":"Pronunciation overrides: the agent speaks each `term` as its `replacement`. Applied to `simple` agents only. Entries are stored as sent, without validation.","uniqueKey":"data.pronunciations.oneOf.0","typeLabel":"Pronunciation · object[]"},{"type":"null","title":"Pronunciations","description":"Pronunciation overrides: the agent speaks each `term` as its `replacement`. Applied to `simple` agents only. Entries are stored as sent, without validation.","uniqueKey":"data.pronunciations.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.pronunciations","typeLabel":"Pronunciation · object[] | null"},"agent_name":{"type":"string","title":"Agent Name","description":"Name of the agent.","uniqueKey":"data.agent_name","typeLabel":"string"},"agent_status":{"type":"string","enum":["ACTIVE","INACTIVE","DELETED"],"title":"Agent Status","description":"Lifecycle status of the agent.","uniqueKey":"data.agent_status","typeLabel":"enum\u003cstring>"},"llm":{"oneOf":[{"type":"object","title":"LlmConfig","description":"Language model configuration, with the names resolved from the catalog. For a `flow` agent, `llm_id` and the model fields come from the flow-default model in `graph_data.agentDefaults.llm.llm_id`.","properties":{"llm_id":{"oneOf":[{"type":"string","title":"Llm Id","description":"Id of an entry in the LLM model catalog. Required on create for `simple` agents. For `flow` agents the flow-default id lives at `graph_data.agentDefaults.llm.llm_id` instead.","uniqueKey":"data.llm.oneOf.0.llm_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Llm Id","description":"Id of an entry in the LLM model catalog. Required on create for `simple` agents. For `flow` agents the flow-default id lives at `graph_data.agentDefaults.llm.llm_id` instead.","uniqueKey":"data.llm.oneOf.0.llm_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.llm_id","typeLabel":"string | null"},"llm_type":{"type":"string","enum":["simple","agentic","flow"],"title":"Llm Type","description":"Required on create. `agentic` is rejected on create (existing agentic agents remain updatable).","uniqueKey":"data.llm.oneOf.0.llm_type","typeLabel":"enum\u003cstring>"},"system_prompt":{"oneOf":[{"type":"string","title":"System Prompt","description":"The base prompt that defines the agent's behavior and role. Used by `simple` agents; flow agents carry their prompts inside `graph_data`.","example":"You are a helpful support assistant for Acme. Answer briefly and politely.","uniqueKey":"data.llm.oneOf.0.system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"System Prompt","description":"The base prompt that defines the agent's behavior and role. Used by `simple` agents; flow agents carry their prompts inside `graph_data`.","example":"You are a helpful support assistant for Acme. Answer briefly and politely.","uniqueKey":"data.llm.oneOf.0.system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.system_prompt","typeLabel":"string | null"},"graph_data":{"oneOf":[{"type":"object","title":"Graph Data","description":"Conversation graph for `flow` agents: `entryNodeId`, `nodes`, `edges`, `variables`, `globalNodeIds`, `agentDefaults`, `language`. The server fills provider/model/voice names into the graph from the catalogs before validating it.","uniqueKey":"data.llm.oneOf.0.graph_data.oneOf.0","typeLabel":"Graph Data · object"},{"type":"null","title":"Graph Data","description":"Conversation graph for `flow` agents: `entryNodeId`, `nodes`, `edges`, `variables`, `globalNodeIds`, `agentDefaults`, `language`. The server fills provider/model/voice names into the graph from the catalogs before validating it.","uniqueKey":"data.llm.oneOf.0.graph_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.graph_data","typeLabel":"Graph Data · object | null"},"tools":{"oneOf":[{"type":"array","items":{"additionalProperties":{"type":"string","uniqueKey":"data.llm.oneOf.0.tools.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"string"},"type":"object","uniqueKey":"data.llm.oneOf.0.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Tools","description":"List of tools or functions available to the LLM for external interactions. Each entry is a map of string keys to string values. Tools also have their own APIs: [Built-in tools](/api-reference/built-in-tools/list-built-in-tools) and [Custom tools](/api-reference/custom-tools/list-custom-tools).","uniqueKey":"data.llm.oneOf.0.tools.oneOf.0","typeLabel":"Tools · object[]"},{"type":"null","title":"Tools","description":"List of tools or functions available to the LLM for external interactions. Each entry is a map of string keys to string values. Tools also have their own APIs: [Built-in tools](/api-reference/built-in-tools/list-built-in-tools) and [Custom tools](/api-reference/custom-tools/list-custom-tools).","uniqueKey":"data.llm.oneOf.0.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.tools","typeLabel":"Tools · object[] | null"},"required_dynamic_data":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"data.llm.oneOf.0.required_dynamic_data.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Required Dynamic Data","description":"List of dynamic data fields the LLM requires for operation.","example":["customer_name","order_id"],"uniqueKey":"data.llm.oneOf.0.required_dynamic_data.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Required Dynamic Data","description":"List of dynamic data fields the LLM requires for operation.","example":["customer_name","order_id"],"uniqueKey":"data.llm.oneOf.0.required_dynamic_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.required_dynamic_data","typeLabel":"string[] | null"},"llm_name":{"oneOf":[{"type":"string","title":"Llm Name","description":"Resolved from the catalog; read-only in practice.","uniqueKey":"data.llm.oneOf.0.llm_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Llm Name","description":"Resolved from the catalog; read-only in practice.","uniqueKey":"data.llm.oneOf.0.llm_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.llm_name","typeLabel":"string | null"},"llm_description":{"oneOf":[{"type":"string","title":"Llm Description","description":"Resolved from the catalog.","uniqueKey":"data.llm.oneOf.0.llm_description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Llm Description","description":"Resolved from the catalog.","uniqueKey":"data.llm.oneOf.0.llm_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.llm_description","typeLabel":"string | null"},"model_provider":{"oneOf":[{"type":"string","title":"Model Provider","description":"Resolved from the catalog, e.g. `openai`, `anthropic`, `verbex`, `openai_compatible`.","uniqueKey":"data.llm.oneOf.0.model_provider.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Provider","description":"Resolved from the catalog, e.g. `openai`, `anthropic`, `verbex`, `openai_compatible`.","uniqueKey":"data.llm.oneOf.0.model_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.model_provider","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","description":"Resolved from the catalog, e.g. `gpt-4o-mini`.","uniqueKey":"data.llm.oneOf.0.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","description":"Resolved from the catalog, e.g. `gpt-4o-mini`.","uniqueKey":"data.llm.oneOf.0.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.model_name","typeLabel":"string | null"},"model_display_name":{"oneOf":[{"type":"string","title":"Model Display Name","description":"Resolved from the catalog.","uniqueKey":"data.llm.oneOf.0.model_display_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Display Name","description":"Resolved from the catalog.","uniqueKey":"data.llm.oneOf.0.model_display_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.model_display_name","typeLabel":"string | null"},"model_temperature":{"oneOf":[{"type":"number","title":"Model Temperature","description":"The agent's own sampling temperature. On create, an omitted value takes the catalog model's temperature; a sent value, `0` included, is stored as is. On update, an omitted value keeps the stored one, even when `llm_id` changes. The service enforces no bounds; the console allows `0`–`2`.","uniqueKey":"data.llm.oneOf.0.model_temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Model Temperature","description":"The agent's own sampling temperature. On create, an omitted value takes the catalog model's temperature; a sent value, `0` included, is stored as is. On update, an omitted value keeps the stored one, even when `llm_id` changes. The service enforces no bounds; the console allows `0`–`2`.","uniqueKey":"data.llm.oneOf.0.model_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.model_temperature","typeLabel":"number | null"},"max_tokens":{"oneOf":[{"type":"integer","title":"Max Tokens","description":"Filled from the LLM model catalog whenever the model is resolved.","uniqueKey":"data.llm.oneOf.0.max_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Tokens","description":"Filled from the LLM model catalog whenever the model is resolved.","uniqueKey":"data.llm.oneOf.0.max_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm.oneOf.0.max_tokens","typeLabel":"integer | null"}},"uniqueKey":"data.llm.oneOf.0","typeLabel":"LlmConfig · object"},{"type":"null","description":"Language model configuration, with the names resolved from the catalog. For a `flow` agent, `llm_id` and the model fields come from the flow-default model in `graph_data.agentDefaults.llm.llm_id`.","uniqueKey":"data.llm.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.llm","typeLabel":"LlmConfig · object | null"},"stt":{"oneOf":[{"type":"object","title":"SttConfig","description":"Speech-to-text configuration, with the names resolved from the catalog. Not stored for a `flow` agent: omitted on get, `null` in list items.","properties":{"provider_id":{"oneOf":[{"type":"string","title":"Provider Id","description":"Id of an entry in the STT provider catalog (`GET /v3/stt/providers`).","uniqueKey":"data.stt.oneOf.0.provider_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider Id","description":"Id of an entry in the STT provider catalog (`GET /v3/stt/providers`).","uniqueKey":"data.stt.oneOf.0.provider_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.provider_id","typeLabel":"string | null"},"model_id":{"oneOf":[{"type":"string","title":"Model Id","description":"Id of a model offered by that provider. Required on create for non-flow agents.","uniqueKey":"data.stt.oneOf.0.model_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Id","description":"Id of a model offered by that provider. Required on create for non-flow agents.","uniqueKey":"data.stt.oneOf.0.model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.model_id","typeLabel":"string | null"},"provider":{"oneOf":[{"type":"string","title":"Provider","description":"Resolved provider name, e.g. `deepgram`. v2 input field; on v3 it is filled in by the server.","uniqueKey":"data.stt.oneOf.0.provider.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider","description":"Resolved provider name, e.g. `deepgram`. v2 input field; on v3 it is filled in by the server.","uniqueKey":"data.stt.oneOf.0.provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.provider","typeLabel":"string | null"},"model":{"oneOf":[{"type":"string","title":"Model","description":"Resolved model name, e.g. `nova-2-phonecall`.","uniqueKey":"data.stt.oneOf.0.model.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model","description":"Resolved model name, e.g. `nova-2-phonecall`.","uniqueKey":"data.stt.oneOf.0.model.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.model","typeLabel":"string | null"},"language":{"oneOf":[{"type":"string","title":"Language","description":"BCP-47 language code for recognition.","uniqueKey":"data.stt.oneOf.0.language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"BCP-47 language code for recognition.","uniqueKey":"data.stt.oneOf.0.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.language","typeLabel":"string | null"},"context_prompt":{"oneOf":[{"type":"string","title":"Context Prompt","description":"Context biasing prompt. Honored only by providers that support it.","uniqueKey":"data.stt.oneOf.0.context_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Context Prompt","description":"Context biasing prompt. Honored only by providers that support it.","uniqueKey":"data.stt.oneOf.0.context_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.context_prompt","typeLabel":"string | null"},"bias_prompt":{"oneOf":[{"type":"string","title":"Bias Prompt","description":"Context biasing instruction. Honored only by providers that support it.","uniqueKey":"data.stt.oneOf.0.bias_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Bias Prompt","description":"Context biasing instruction. Honored only by providers that support it.","uniqueKey":"data.stt.oneOf.0.bias_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.bias_prompt","typeLabel":"string | null"},"hotwords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"data.stt.oneOf.0.hotwords.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Hotwords","description":"Terms to bias recognition toward. Honored only by providers that support it.","uniqueKey":"data.stt.oneOf.0.hotwords.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Hotwords","description":"Terms to bias recognition toward. Honored only by providers that support it.","uniqueKey":"data.stt.oneOf.0.hotwords.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.hotwords","typeLabel":"string[] | null"},"configuration":{"oneOf":[{"type":"string","title":"Configuration","description":"Additional provider-specific configuration.","uniqueKey":"data.stt.oneOf.0.configuration.oneOf.0","typeLabel":"string"},{"type":"null","title":"Configuration","description":"Additional provider-specific configuration.","uniqueKey":"data.stt.oneOf.0.configuration.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt.oneOf.0.configuration","typeLabel":"string | null"}},"uniqueKey":"data.stt.oneOf.0","typeLabel":"SttConfig · object"},{"type":"null","description":"Speech-to-text configuration, with the names resolved from the catalog. Not stored for a `flow` agent: omitted on get, `null` in list items.","uniqueKey":"data.stt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.stt","typeLabel":"SttConfig · object | null"},"tts":{"oneOf":[{"type":"object","title":"TtsConfig","description":"Text-to-speech configuration, with the names resolved from the catalog. Not stored for a `flow` agent: omitted on get, `null` in list items.","properties":{"provider_id":{"oneOf":[{"type":"string","title":"Provider Id","description":"Id of an entry in the TTS provider catalog (`GET /v3/tts/providers`).","uniqueKey":"data.tts.oneOf.0.provider_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider Id","description":"Id of an entry in the TTS provider catalog (`GET /v3/tts/providers`).","uniqueKey":"data.tts.oneOf.0.provider_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.provider_id","typeLabel":"string | null"},"voice_id":{"oneOf":[{"type":"string","title":"Voice Id","description":"Id of a voice offered by that provider. Required on create for non-flow agents. A voice is listed once per language it supports, so the same `voice_id` can appear under several language codes.","uniqueKey":"data.tts.oneOf.0.voice_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Voice Id","description":"Id of a voice offered by that provider. Required on create for non-flow agents. A voice is listed once per language it supports, so the same `voice_id` can appear under several language codes.","uniqueKey":"data.tts.oneOf.0.voice_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.voice_id","typeLabel":"string | null"},"provider":{"oneOf":[{"type":"string","title":"Provider","description":"Resolved provider name, e.g. `elevenlabs`.","uniqueKey":"data.tts.oneOf.0.provider.oneOf.0","typeLabel":"string"},{"type":"null","title":"Provider","description":"Resolved provider name, e.g. `elevenlabs`.","uniqueKey":"data.tts.oneOf.0.provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.provider","typeLabel":"string | null"},"voice_name":{"oneOf":[{"type":"string","title":"Voice Name","description":"Resolved voice name.","uniqueKey":"data.tts.oneOf.0.voice_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Voice Name","description":"Resolved voice name.","uniqueKey":"data.tts.oneOf.0.voice_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.voice_name","typeLabel":"string | null"},"model_name":{"oneOf":[{"type":"string","title":"Model Name","description":"Resolved synthesis model name. On this catalog the model hangs off the individual voice, not the provider.","uniqueKey":"data.tts.oneOf.0.model_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Name","description":"Resolved synthesis model name. On this catalog the model hangs off the individual voice, not the provider.","uniqueKey":"data.tts.oneOf.0.model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.model_name","typeLabel":"string | null"},"voice_temperature":{"oneOf":[{"type":"number","title":"Voice Temperature","description":"Controls the randomness in voice generation, `0`–`2`. Lower values produce more consistent output, higher values add more variation.","default":0.2,"maximum":2,"minimum":0,"uniqueKey":"data.tts.oneOf.0.voice_temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Voice Temperature","description":"Controls the randomness in voice generation, `0`–`2`. Lower values produce more consistent output, higher values add more variation.","default":0.2,"uniqueKey":"data.tts.oneOf.0.voice_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.voice_temperature","typeLabel":"number | null"},"language":{"oneOf":[{"type":"string","title":"Language","description":"BCP-47 language code for synthesis.","uniqueKey":"data.tts.oneOf.0.language.oneOf.0","typeLabel":"string"},{"type":"null","title":"Language","description":"BCP-47 language code for synthesis.","uniqueKey":"data.tts.oneOf.0.language.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts.oneOf.0.language","typeLabel":"string | null"}},"uniqueKey":"data.tts.oneOf.0","typeLabel":"TtsConfig · object"},{"type":"null","description":"Text-to-speech configuration, with the names resolved from the catalog. Not stored for a `flow` agent: omitted on get, `null` in list items.","uniqueKey":"data.tts.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.tts","typeLabel":"TtsConfig · object | null"},"created_by_user_id":{"oneOf":[{"type":"string","title":"Created By User Id","description":"Id of the user who created the agent.","uniqueKey":"data.created_by_user_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Created By User Id","description":"Id of the user who created the agent.","uniqueKey":"data.created_by_user_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.created_by_user_id","typeLabel":"string | null"},"organization_id":{"oneOf":[{"type":"string","title":"Organization Id","description":"Id of the organization that owns the agent.","uniqueKey":"data.organization_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Organization Id","description":"Id of the organization that owns the agent.","uniqueKey":"data.organization_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.organization_id","typeLabel":"string | null"},"workspace_id":{"oneOf":[{"type":"string","title":"Workspace Id","description":"Id of the workspace the agent belongs to. Null for an agent with no workspace.","uniqueKey":"data.workspace_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Workspace Id","description":"Id of the workspace the agent belongs to. Null for an agent with no workspace.","uniqueKey":"data.workspace_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.workspace_id","typeLabel":"string | null"},"agent_owner_id":{"oneOf":[{"type":"string","title":"Agent Owner Id","description":"Equal to `created_by_user_id` for an agent with no workspace, otherwise the workspace owner. Not set for a `flow` agent.","uniqueKey":"data.agent_owner_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Agent Owner Id","description":"Equal to `created_by_user_id` for an agent with no workspace, otherwise the workspace owner. Not set for a `flow` agent.","uniqueKey":"data.agent_owner_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.agent_owner_id","typeLabel":"string | null"},"created_at":{"oneOf":[{"type":"string","title":"Created At","description":"When the agent was created.","format":"date-time","uniqueKey":"data.created_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Created At","description":"When the agent was created.","uniqueKey":"data.created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time> | null"},"modified_at":{"oneOf":[{"type":"string","title":"Modified At","description":"When the agent was last modified.","format":"date-time","uniqueKey":"data.modified_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Modified At","description":"When the agent was last modified.","uniqueKey":"data.modified_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.modified_at","typeLabel":"string\u003cdate-time> | null"},"current_version":{"oneOf":[{"type":"integer","title":"Current Version","description":"Latest version number of the agent.","uniqueKey":"data.current_version.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Current Version","description":"Latest version number of the agent.","uniqueKey":"data.current_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.current_version","typeLabel":"integer | null"},"current_version_name":{"oneOf":[{"type":"string","title":"Current Version Name","description":"Label of the current version; null when unnamed.","uniqueKey":"data.current_version_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Current Version Name","description":"Label of the current version; null when unnamed.","uniqueKey":"data.current_version_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.current_version_name","typeLabel":"string | null"},"operation_type":{"oneOf":[{"type":"string","title":"Operation Type","description":"Which operation produced this body.","enum":["CREATE","CREATE_FLOW_BUILDER","UPDATE","UPDATE_FLOW_BUILDER","UPDATE_AGENTIC","DEACTIVATE","GET"],"uniqueKey":"data.operation_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Operation Type","description":"Which operation produced this body.","uniqueKey":"data.operation_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.operation_type","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"data","typeLabel":"AIAgentV3Response · object"},"error_details":{"oneOf":[{"type":"object","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","additionalProperties":{"type":"string","uniqueKey":"error_details.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"error_details.oneOf.0","typeLabel":"Error Details · object"},{"type":"null","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"Error Details · object | null"}},"uniqueKey":"","typeLabel":"ApiResponse\u003cAIAgent> · object"},"examples":{"simple":{"title":"simple","value":{"status":"success","message":"Simple agent updated successfully","data":{"ai_agent_id":"3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42","agent_name":"Customer Support Agent","agent_status":"ACTIVE","language_code":"en-US","llm":{"llm_id":"9d259647-d5ec-423d-96a9-2750980e8ecb","llm_type":"simple","model_provider":"openai","model_name":"gpt-4o-mini","model_display_name":"GPT-4o mini","model_temperature":0.1,"max_tokens":4096,"system_prompt":"You are a helpful customer support assistant."},"stt":{"provider_id":"6a5c45808d2d94e9d0e255d3","provider":"deepgram","model_id":"af97a5f7-0f10-4eb3-a915-f7fe95a050f8","model":"nova-3-general"},"tts":{"provider_id":"6a5c079f814b8ed08b15172b","provider":"elevenlabs","voice_id":"IKne3meq5aSn9XLyUdCD","voice_name":"Charlie","model_name":"eleven_flash_v2_5","voice_temperature":1},"speech_speed":0.9,"vad_activation_threshold":0.4,"knowledge_base_id":"kb-123456","enable_user_interruptions":true,"minimum_speech_duration_for_interruptions":0.5,"minimum_words_before_interruption":2,"interruption_mode":"vad","ambient_sound":"office","ambient_sound_volume":1,"webhook_url":"https://api.example.com/webhooks/call-events","end_call_after_silence_seconds":20,"max_call_duration_seconds":600,"welcome_message":"Hello! Thanks for calling. How can I help you today?","end_call_instruction":"End the call politely once the issue is resolved.","amd_voicemail_message":"Sorry we missed you. Please call us back.","voicemail_detection_timeout_seconds":5,"agent_ended_call_delay_seconds":1,"welcome_message_delay_in_seconds":0.5,"enable_amd":true,"silence_reminder_enabled":true,"silence_reminder_duration_seconds":15,"max_number_of_silence_reminders":3,"interval_between_silence_reminders_seconds":10,"enable_noise_cancellation":true,"dynamic_data_config":[{"name":"customer_data","url":"https://api.example.com/customer-data","method":"GET","timeout":2000,"cache":true,"response_data":[{"name":"customer_name","data":"$.customer.name","context":"Customer's full name for personalization"}]}],"post_call_analysis":[{"type":"string","name":"call_summary","description":"A brief summary of the call and key points.","examples":["Customer asked about billing; issue resolved."]}],"pronunciations":[{"id":"r1","term":"API","replacement":"ay pee eye"}],"organization_id":"org_7f3a9c","agent_owner_id":"usr_12ab34","created_by_user_id":"usr_12ab34","created_at":"2026-10-15T09:30:12.481Z","modified_at":"2026-10-15T10:02:47.115Z","current_version":2,"operation_type":"UPDATE"}}},"flow":{"title":"flow","value":{"status":"success","message":"Flow builder agent updated successfully","data":{"ai_agent_id":"5b1e9d7c-2f4a-4e6b-8c3d-1a2b3c4d5e6f","agent_name":"New Flow Agent","agent_status":"ACTIVE","language_code":"en-US","llm":{"llm_id":"d6847c0b-179f-4910-b4f5-a1bee9807a57","llm_type":"flow","model_provider":"openai","model_name":"gpt-4o-mini","model_display_name":"GPT-4o mini","model_temperature":0.7,"max_tokens":4096,"graph_data":{"entryNodeId":"node-start","nodes":[{"id":"node-start","type":"start","position":{"x":300,"y":50},"data":{"label":"Start","userAwayTimeoutSec":30,"maxToolSteps":3}},{"id":"conv","type":"conversation","position":{"x":300,"y":200},"data":{"label":"Conversation","mode":"full","instructions":"You are a helpful assistant.","openingMessage":{"type":"llm-generated","instructions":"Greet the user and ask how you can help."},"modelConfig":{"stt":{"source":"flow-default"},"llm":{"source":"flow-default"},"tts":{"source":"flow-default"}},"allowEndCall":true}},{"id":"end","type":"end-call","position":{"x":300,"y":350},"data":{"label":"End call","farewellMessage":{"type":"none"}}}],"edges":[{"id":"e1","source":"node-start","target":"conv","label":"Start","kind":"session-start","contextPassing":"full"},{"id":"e2","source":"conv","target":"end","label":"End Call","kind":"conditional-edge","decisionType":"llm","promptCondition":"When the user wants to end the call","contextPassing":"full"}],"variables":[],"globalNodeIds":[],"agentDefaults":{"stt":{"provider_id":"6a5c45808d2d94e9d0e255d3","model_id":"aec2493a-eba9-48d0-9e64-4aab4437f7f5","provider":"deepgram","model":"nova-3"},"llm":{"llm_id":"d6847c0b-179f-4910-b4f5-a1bee9807a57","provider":"openai","model":"gpt-4o-mini"},"tts":{"provider_id":"6a5c079f814b8ed08b15172b","voice_id":"EXAVITQu4vr4xnSDxMaL","provider":"elevenlabs","voice":"EXAVITQu4vr4xnSDxMaL","model":"eleven_flash_v2_5"}},"language":"en"}},"speech_speed":0.8,"vad_activation_threshold":0.5,"wait_time_before_detecting_end_of_speech":0.2,"max_endpointing_delay":2,"enable_user_interruptions":true,"minimum_speech_duration_for_interruptions":0.5,"minimum_words_before_interruption":2,"interruption_mode":"vad","ambient_sound":"none","ambient_sound_volume":1,"end_call_after_silence_seconds":10,"max_call_duration_seconds":1800,"voicemail_detection_timeout_seconds":90,"agent_ended_call_delay_seconds":2,"welcome_message_delay_in_seconds":2,"enable_amd":false,"silence_reminder_enabled":false,"silence_reminder_duration_seconds":10,"max_number_of_silence_reminders":3,"interval_between_silence_reminders_seconds":10,"organization_id":"org_7f3a9c","created_by_user_id":"usr_12ab34","created_at":"2026-10-15T09:41:03.220Z","modified_at":"2026-10-15T10:05:19.604Z","current_version":2,"operation_type":"UPDATE_FLOW_BUILDER"}}}},"exampleType":"examples"}},"exampleType":"examples"},"37a9fe6b-4c90-4a7b-835d-a2b56878a338":{"description":"The request sent catalog LLM name fields; send `llm.llm_id` to change the model","content":{"application/json":{"schema":{"type":"object","title":"ErrorResponse","properties":{"status":{"type":"string","enum":["error"],"title":"Status","description":"Outcome of the request: `success` or `error`, in lowercase.","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Human-readable message about the result.","uniqueKey":"message","typeLabel":"string"},"error_details":{"oneOf":[{"type":"object","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","additionalProperties":{"type":"string","uniqueKey":"error_details.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"error_details.oneOf.0","typeLabel":"Error Details · object"},{"type":"null","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"Error Details · object | null"}},"uniqueKey":"","typeLabel":"ErrorResponse · object"},"example":{"status":"error","message":"Agent validation failed","error_details":{"llm.model_provider":"llm.model_provider is not accepted on v3 update; send llm.llm_id to change the model","llm.model_name":"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model","llm.model_display_name":"llm.model_display_name is not accepted on v3 update; send llm.llm_id to change the model"}},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"Agent validation failed","error_details":{"llm.model_provider":"llm.model_provider is not accepted on v3 update; send llm.llm_id to change the model","llm.model_name":"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model","llm.model_display_name":"llm.model_display_name is not accepted on v3 update; send llm.llm_id to change the model"}}}},"exampleType":"examples"}},"exampleType":"examples"},"1b45ded8-6637-4319-b6a4-51667fd51235":{"description":"The agent exists but is outside the caller's organization or workspace","content":{"application/json":{"schema":{"type":"object","title":"ErrorResponse","properties":{"status":{"type":"string","enum":["error"],"title":"Status","description":"Outcome of the request: `success` or `error`, in lowercase.","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Human-readable message about the result.","uniqueKey":"message","typeLabel":"string"},"error_details":{"oneOf":[{"type":"object","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","additionalProperties":{"type":"string","uniqueKey":"error_details.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"error_details.oneOf.0","typeLabel":"Error Details · object"},{"type":"null","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"Error Details · object | null"}},"uniqueKey":"","typeLabel":"ErrorResponse · object"},"example":{"status":"error","message":"You do not have permission to update agent: 3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42","error_details":{"organizationId":"Agent is outside the caller scope"}},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"You do not have permission to update agent: 3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42","error_details":{"organizationId":"Agent is outside the caller scope"}}}},"exampleType":"examples"}},"exampleType":"examples"},"54abb6c0-f96b-451f-bee2-04bcf26fbc4a":{"description":"No active agent with that id","content":{"application/json":{"schema":{"type":"object","title":"ErrorResponse","properties":{"status":{"type":"string","enum":["error"],"title":"Status","description":"Outcome of the request: `success` or `error`, in lowercase.","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Human-readable message about the result.","uniqueKey":"message","typeLabel":"string"},"error_details":{"oneOf":[{"type":"object","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","additionalProperties":{"type":"string","uniqueKey":"error_details.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"error_details.oneOf.0","typeLabel":"Error Details · object"},{"type":"null","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"Error Details · object | null"}},"uniqueKey":"","typeLabel":"ErrorResponse · object"},"example":{"status":"error","message":"Agent not found with ID: 3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"Agent not found with ID: 3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42"}}},"exampleType":"examples"}},"exampleType":"examples"},"4317e94b-4502-4abe-9bb8-a8ba7146c746":{"description":"The request body failed validation, or a referenced catalog record was missing, inactive or incompatible","content":{"application/json":{"schema":{"type":"object","title":"ErrorResponse","properties":{"status":{"type":"string","enum":["error"],"title":"Status","description":"Outcome of the request: `success` or `error`, in lowercase.","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","title":"Message","description":"Human-readable message about the result.","uniqueKey":"message","typeLabel":"string"},"error_details":{"oneOf":[{"type":"object","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","additionalProperties":{"type":"string","uniqueKey":"error_details.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"error_details.oneOf.0","typeLabel":"Error Details · object"},{"type":"null","title":"Error Details","description":"Field path to message, for validation failures. Omitted when there are none.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"Error Details · object | null"}},"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"bean_validation":{"title":"bean_validation","value":{"status":"error","message":"Validation failed","error_details":{"vadActivationThreshold":"VAD activation threshold cannot exceed 0.90"}}},"wrong_type":{"title":"wrong_type","value":{"status":"error","message":"Invalid field type in request body","error_details":{"vad_activation_threshold":"Invalid value 'high'. Expected type: Double"}}},"inactive_model":{"title":"inactive_model","value":{"status":"error","message":"LLM model validation failed","error_details":{"llm.llm_id":"LLM model is not active. Current status: INACTIVE"}}},"unknown_model":{"title":"unknown_model","value":{"status":"error","message":"LLM model lookup failed","error_details":{"llm.llm_id":"Referenced LLM model was not found"}}},"stt_model_not_on_provider":{"title":"stt_model_not_on_provider","value":{"status":"error","message":"STT validation failed","error_details":{"data.stt.model_id":"invalid model id for provider 6a5c45808d2d94e9d0e255d3"}}},"endpointing":{"title":"endpointing","value":{"status":"error","message":"Agent validation failed","error_details":{"max_endpointing_delay":"max_endpointing_delay (0.2) must be greater than wait_time_before_detecting_end_of_speech (0.5)"}}},"flow_invalid_voice":{"title":"flow_invalid_voice","value":{"status":"error","message":"Agent validation failed for flow builder graph data","error_details":{"llm.graph_data.agentDefaults.tts.voice_id":"invalid voice_id for provider 6a5c079f814b8ed08b15172b"}}},"flow_graph_without_type":{"title":"flow_graph_without_type","value":{"status":"error","message":"Agent validation failed","error_details":{"llm.llmType":"LLM type is required when updating graph data"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{},"servers":{}},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"hishabsingaporepteltd","siteName":"Verbex Docs","title":"Update AI Agent - Verbex Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T23:11:06.732Z","originalFileLocation":"api-reference/ai-agents-v3/update-ai-agent.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=\"Update an agent and return the full updated agent. The v2 equivalent, PUT /v2/ai-agents/{agent_id}, is deprecated and stops working on November 30, 2026. This is the v3 endpoint. Migrate from v2 to v3 before that date. ## Partial updates Although this is a PUT, the update merges. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (llm, stt, tts) merge the same way, so {\u0026quot;tts\u0026quot;: {\u0026quot;provider_id\u0026quot;: \u0026quot;…\u0026quot;, \u0026quot;voice_id\u0026quot;: \u0026quot;…\u0026quot;}} changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it. llm.graph_data is the exception: it is not merged. A sent graph_data replaces the stored graph as a whole. ## Changing the LLM, STT model or voice Selections use the same id-based contract as Create AI Agent: - Send stt.provider_id + stt.model_id or tts.provider_id + tts.voice_id. The reference is resolved again against the provider catalog, and the stored names are refreshed. - Send llm.llm_id, or graph_data.agentDefaults.llm.llm_id for a flow agent. The LLM fields on the agent are refreshed from the model catalog. ## Flow agents - To change a flow agent\u0026#x27;s default STT model, LLM or voice, send llm.llm_type: \u0026quot;flow\u0026quot; and the complete llm.graph_data with the new ids in agentDefaults. A partial graph replaces the stored one. See the flow_graph request example. - graph_data without llm.llm_type returns 422. - The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns 422 with the graph path in error_details, for example llm.graph_data.agentDefaults.tts.voice_id. - Root stt and tts are not used by flow agents. The same 422 checks as create apply: the referenced record must exist, be ACTIVE, support the agent\u0026#x27;s llm_type and, for a custom model, belong to your organization. ## Rejected LLM fields llm.model_provider, llm.model_name and llm.model_display_name are not accepted. The model is chosen by llm.llm_id alone, and those fields are always refilled from the catalog. A request that sends any of them returns 400, and every offending field is named in error_details: json { \u0026quot;status\u0026quot;: \u0026quot;error\u0026quot;, \u0026quot;message\u0026quot;: \u0026quot;Agent validation failed\u0026quot;, \u0026quot;error_details\u0026quot;: { \u0026quot;llm.model_name\u0026quot;: \u0026quot;llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\u0026quot; } } Get AI Agent returns those three fields inside data.llm. A client that reads an agent and sends the same llm object back gets this 400. Remove the three fields, or send only the fields you change. ## Field notes - model_temperature: when omitted, the stored value is kept, even when llm_id changes. The new model\u0026#x27;s temperature applies only if the agent had none. A sent value, 0 included, is stored as is. - vad_activation_threshold: omitting the key keeps the stored value. A number from 0.10 to 0.90 replaces it. - wait_time_before_detecting_end_of_speech and max_endpointing_delay apply to flow agents only. When a request changes either one, max_endpointing_delay must stay greater than the wait time after the merge, otherwise the request returns 422. Sending vad_activation_threshold: null does not clear the stored value yet. The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one. ## Versioning Every successful update writes a new agent version. The response carries current_version and, when the version has a label, current_version_name. ## Response envelope Every v3 response uses the same envelope: | Field | Meaning | | --- | --- | | status | success or error. Always lowercase. | | message | A human-readable summary. | | data | The result. Absent on errors. | | error_details | A map from field path to message. Present only on some errors. | Fields with no value are omitted rather than returned as null. The response message and operation_type depend on the agent type: Simple agent updated successfully / UPDATE, Flow builder agent updated successfully / UPDATE_FLOW_BUILDER, or Agentic agent updated successfully / UPDATE_AGENTIC. ## Status codes | Code | When | | --- | --- | | 200 | Updated. The body carries the full agent. | | 400 | The request sent llm.model_provider, llm.model_name or llm.model_display_name. | | 403 | The agent belongs to another organization or workspace. | | 404 | No such agent. | | 422 | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |\">\u003cmeta data-mint-head name=\"application-name\" content=\"Verbex Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_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=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update AI Agent - Verbex Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Update an agent and return the full updated agent. The v2 equivalent, PUT /v2/ai-agents/{agent_id}, is deprecated and stops working on November 30, 2026. This is the v3 endpoint. Migrate from v2 to v3 before that date. ## Partial updates Although this is a PUT, the update merges. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (llm, stt, tts) merge the same way, so {\u0026quot;tts\u0026quot;: {\u0026quot;provider_id\u0026quot;: \u0026quot;…\u0026quot;, \u0026quot;voice_id\u0026quot;: \u0026quot;…\u0026quot;}} changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it. llm.graph_data is the exception: it is not merged. A sent graph_data replaces the stored graph as a whole. ## Changing the LLM, STT model or voice Selections use the same id-based contract as Create AI Agent: - Send stt.provider_id + stt.model_id or tts.provider_id + tts.voice_id. The reference is resolved again against the provider catalog, and the stored names are refreshed. - Send llm.llm_id, or graph_data.agentDefaults.llm.llm_id for a flow agent. The LLM fields on the agent are refreshed from the model catalog. ## Flow agents - To change a flow agent\u0026#x27;s default STT model, LLM or voice, send llm.llm_type: \u0026quot;flow\u0026quot; and the complete llm.graph_data with the new ids in agentDefaults. A partial graph replaces the stored one. See the flow_graph request example. - graph_data without llm.llm_type returns 422. - The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns 422 with the graph path in error_details, for example llm.graph_data.agentDefaults.tts.voice_id. - Root stt and tts are not used by flow agents. The same 422 checks as create apply: the referenced record must exist, be ACTIVE, support the agent\u0026#x27;s llm_type and, for a custom model, belong to your organization. ## Rejected LLM fields llm.model_provider, llm.model_name and llm.model_display_name are not accepted. The model is chosen by llm.llm_id alone, and those fields are always refilled from the catalog. A request that sends any of them returns 400, and every offending field is named in error_details: json { \u0026quot;status\u0026quot;: \u0026quot;error\u0026quot;, \u0026quot;message\u0026quot;: \u0026quot;Agent validation failed\u0026quot;, \u0026quot;error_details\u0026quot;: { \u0026quot;llm.model_name\u0026quot;: \u0026quot;llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\u0026quot; } } Get AI Agent returns those three fields inside data.llm. A client that reads an agent and sends the same llm object back gets this 400. Remove the three fields, or send only the fields you change. ## Field notes - model_temperature: when omitted, the stored value is kept, even when llm_id changes. The new model\u0026#x27;s temperature applies only if the agent had none. A sent value, 0 included, is stored as is. - vad_activation_threshold: omitting the key keeps the stored value. A number from 0.10 to 0.90 replaces it. - wait_time_before_detecting_end_of_speech and max_endpointing_delay apply to flow agents only. When a request changes either one, max_endpointing_delay must stay greater than the wait time after the merge, otherwise the request returns 422. Sending vad_activation_threshold: null does not clear the stored value yet. The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one. ## Versioning Every successful update writes a new agent version. The response carries current_version and, when the version has a label, current_version_name. ## Response envelope Every v3 response uses the same envelope: | Field | Meaning | | --- | --- | | status | success or error. Always lowercase. | | message | A human-readable summary. | | data | The result. Absent on errors. | | error_details | A map from field path to message. Present only on some errors. | Fields with no value are omitted rather than returned as null. The response message and operation_type depend on the agent type: Simple agent updated successfully / UPDATE, Flow builder agent updated successfully / UPDATE_FLOW_BUILDER, or Agentic agent updated successfully / UPDATE_AGENTIC. ## Status codes | Code | When | | --- | --- | | 200 | Updated. The body carries the full agent. | | 400 | The request sent llm.model_provider, llm.model_name or llm.model_display_name. | | 403 | The agent belongs to another organization or workspace. | | 404 | No such agent. | | 422 | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Verbex Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hishabsingaporepteltd.mintlify.app/_mintlify/api/og/v2?division=AI+Agents+v3\u0026amp;title=Update+AI+Agent\u0026amp;description=Update+an+agent+and+return+the+full+updated+agent.%0A%0A%3CWarning%3E%0A**The+v2+equivalent%2C+%5B%60PUT+%2Fv2%2Fai-agents%2F%7Bagent_id%7D%60%5D%28%2Fapi-reference%2Fai-agents-v2%2Fupdate-ai-agent%29\u0026amp;theme=70c8dcbcb80920d3074a2878\u0026amp;signature=64fdd617a1830c8c985e7171d56eacf62d6cf6848e7c557263bd9b46085b3066\">\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 AI Agent - Verbex Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Update an agent and return the full updated agent. The v2 equivalent, PUT /v2/ai-agents/{agent_id}, is deprecated and stops working on November 30, 2026. This is the v3 endpoint. Migrate from v2 to v3 before that date. ## Partial updates Although this is a PUT, the update merges. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (llm, stt, tts) merge the same way, so {\u0026quot;tts\u0026quot;: {\u0026quot;provider_id\u0026quot;: \u0026quot;…\u0026quot;, \u0026quot;voice_id\u0026quot;: \u0026quot;…\u0026quot;}} changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it. llm.graph_data is the exception: it is not merged. A sent graph_data replaces the stored graph as a whole. ## Changing the LLM, STT model or voice Selections use the same id-based contract as Create AI Agent: - Send stt.provider_id + stt.model_id or tts.provider_id + tts.voice_id. The reference is resolved again against the provider catalog, and the stored names are refreshed. - Send llm.llm_id, or graph_data.agentDefaults.llm.llm_id for a flow agent. The LLM fields on the agent are refreshed from the model catalog. ## Flow agents - To change a flow agent\u0026#x27;s default STT model, LLM or voice, send llm.llm_type: \u0026quot;flow\u0026quot; and the complete llm.graph_data with the new ids in agentDefaults. A partial graph replaces the stored one. See the flow_graph request example. - graph_data without llm.llm_type returns 422. - The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns 422 with the graph path in error_details, for example llm.graph_data.agentDefaults.tts.voice_id. - Root stt and tts are not used by flow agents. The same 422 checks as create apply: the referenced record must exist, be ACTIVE, support the agent\u0026#x27;s llm_type and, for a custom model, belong to your organization. ## Rejected LLM fields llm.model_provider, llm.model_name and llm.model_display_name are not accepted. The model is chosen by llm.llm_id alone, and those fields are always refilled from the catalog. A request that sends any of them returns 400, and every offending field is named in error_details: json { \u0026quot;status\u0026quot;: \u0026quot;error\u0026quot;, \u0026quot;message\u0026quot;: \u0026quot;Agent validation failed\u0026quot;, \u0026quot;error_details\u0026quot;: { \u0026quot;llm.model_name\u0026quot;: \u0026quot;llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\u0026quot; } } Get AI Agent returns those three fields inside data.llm. A client that reads an agent and sends the same llm object back gets this 400. Remove the three fields, or send only the fields you change. ## Field notes - model_temperature: when omitted, the stored value is kept, even when llm_id changes. The new model\u0026#x27;s temperature applies only if the agent had none. A sent value, 0 included, is stored as is. - vad_activation_threshold: omitting the key keeps the stored value. A number from 0.10 to 0.90 replaces it. - wait_time_before_detecting_end_of_speech and max_endpointing_delay apply to flow agents only. When a request changes either one, max_endpointing_delay must stay greater than the wait time after the merge, otherwise the request returns 422. Sending vad_activation_threshold: null does not clear the stored value yet. The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one. ## Versioning Every successful update writes a new agent version. The response carries current_version and, when the version has a label, current_version_name. ## Response envelope Every v3 response uses the same envelope: | Field | Meaning | | --- | --- | | status | success or error. Always lowercase. | | message | A human-readable summary. | | data | The result. Absent on errors. | | error_details | A map from field path to message. Present only on some errors. | Fields with no value are omitted rather than returned as null. The response message and operation_type depend on the agent type: Simple agent updated successfully / UPDATE, Flow builder agent updated successfully / UPDATE_FLOW_BUILDER, or Agentic agent updated successfully / UPDATE_AGENTIC. ## Status codes | Code | When | | --- | --- | | 200 | Updated. The body carries the full agent. | | 400 | The request sent llm.model_provider, llm.model_name or llm.model_display_name. | | 403 | The agent belongs to another organization or workspace. | | 404 | No such agent. | | 422 | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hishabsingaporepteltd.mintlify.app/_mintlify/api/og/v2?division=AI+Agents+v3\u0026amp;title=Update+AI+Agent\u0026amp;description=Update+an+agent+and+return+the+full+updated+agent.%0A%0A%3CWarning%3E%0A**The+v2+equivalent%2C+%5B%60PUT+%2Fv2%2Fai-agents%2F%7Bagent_id%7D%60%5D%28%2Fapi-reference%2Fai-agents-v2%2Fupdate-ai-agent%29\u0026amp;theme=70c8dcbcb80920d3074a2878\u0026amp;signature=64fdd617a1830c8c985e7171d56eacf62d6cf6848e7c557263bd9b46085b3066\">\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=\"/mintlify-assets/_mintlify/favicons/hishabsingaporepteltd/72gxkt7gRN01IC5L/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Verbex Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/ai-agents-v3/update-ai-agent.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.verbex.ai/#organization\",\"name\":\"Verbex Docs\",\"url\":\"https://docs.verbex.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hishabsingaporepteltd/hKDJJlbuwj-_7GRI/light.png?fit=max\u0026auto=format\u0026n=hKDJJlbuwj-_7GRI\u0026q=85\u0026s=8e51283f8c4e5daa2b06e4c7b010036a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.verbex.ai#website\",\"name\":\"Verbex Docs\",\"url\":\"https://docs.verbex.ai\",\"publisher\":{\"@id\":\"https://docs.verbex.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent#webpage\",\"url\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent\",\"name\":\"Update AI Agent\",\"description\":\"Update an agent and return the full updated agent. The v2 equivalent, PUT /v2/ai-agents/{agent_id}, is deprecated and stops working on November 30, 2026. This is the v3 endpoint. Migrate from v2 to v3 before that date. ## Partial updates Although this is a PUT, the update merges. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (llm, stt, tts) merge the same way, so {\\\"tts\\\": {\\\"provider_id\\\": \\\"…\\\", \\\"voice_id\\\": \\\"…\\\"}} changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it. llm.graph_data is the exception: it is not merged. A sent graph_data replaces the stored graph as a whole. ## Changing the LLM, STT model or voice Selections use the same id-based contract as Create AI Agent: - Send stt.provider_id + stt.model_id or tts.provider_id + tts.voice_id. The reference is resolved again against the provider catalog, and the stored names are refreshed. - Send llm.llm_id, or graph_data.agentDefaults.llm.llm_id for a flow agent. The LLM fields on the agent are refreshed from the model catalog. ## Flow agents - To change a flow agent's default STT model, LLM or voice, send llm.llm_type: \\\"flow\\\" and the complete llm.graph_data with the new ids in agentDefaults. A partial graph replaces the stored one. See the flow_graph request example. - graph_data without llm.llm_type returns 422. - The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns 422 with the graph path in error_details, for example llm.graph_data.agentDefaults.tts.voice_id. - Root stt and tts are not used by flow agents. The same 422 checks as create apply: the referenced record must exist, be ACTIVE, support the agent's llm_type and, for a custom model, belong to your organization. ## Rejected LLM fields llm.model_provider, llm.model_name and llm.model_display_name are not accepted. The model is chosen by llm.llm_id alone, and those fields are always refilled from the catalog. A request that sends any of them returns 400, and every offending field is named in error_details: json { \\\"status\\\": \\\"error\\\", \\\"message\\\": \\\"Agent validation failed\\\", \\\"error_details\\\": { \\\"llm.model_name\\\": \\\"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\\\" } } Get AI Agent returns those three fields inside data.llm. A client that reads an agent and sends the same llm object back gets this 400. Remove the three fields, or send only the fields you change. ## Field notes - model_temperature: when omitted, the stored value is kept, even when llm_id changes. The new model's temperature applies only if the agent had none. A sent value, 0 included, is stored as is. - vad_activation_threshold: omitting the key keeps the stored value. A number from 0.10 to 0.90 replaces it. - wait_time_before_detecting_end_of_speech and max_endpointing_delay apply to flow agents only. When a request changes either one, max_endpointing_delay must stay greater than the wait time after the merge, otherwise the request returns 422. Sending vad_activation_threshold: null does not clear the stored value yet. The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one. ## Versioning Every successful update writes a new agent version. The response carries current_version and, when the version has a label, current_version_name. ## Response envelope Every v3 response uses the same envelope: | Field | Meaning | | --- | --- | | status | success or error. Always lowercase. | | message | A human-readable summary. | | data | The result. Absent on errors. | | error_details | A map from field path to message. Present only on some errors. | Fields with no value are omitted rather than returned as null. The response message and operation_type depend on the agent type: Simple agent updated successfully / UPDATE, Flow builder agent updated successfully / UPDATE_FLOW_BUILDER, or Agentic agent updated successfully / UPDATE_AGENTIC. ## Status codes | Code | When | | --- | --- | | 200 | Updated. The body carries the full agent. | | 400 | The request sent llm.model_provider, llm.model_name or llm.model_display_name. | | 403 | The agent belongs to another organization or workspace. | | 404 | No such agent. | | 422 | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |\",\"dateModified\":\"2026-11-01T23:11:06.732Z\",\"isPartOf\":{\"@id\":\"https://docs.verbex.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"AI Agents v3\",\"item\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/list-ai-agents\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update AI Agent\",\"item\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent#apireference\",\"headline\":\"Update AI Agent\",\"name\":\"Update AI Agent\",\"description\":\"Update an agent and return the full updated agent. The v2 equivalent, PUT /v2/ai-agents/{agent_id}, is deprecated and stops working on November 30, 2026. This is the v3 endpoint. Migrate from v2 to v3 before that date. ## Partial updates Although this is a PUT, the update merges. Fields present in the body are applied. Fields you omit keep their stored value. Nested objects (llm, stt, tts) merge the same way, so {\\\"tts\\\": {\\\"provider_id\\\": \\\"…\\\", \\\"voice_id\\\": \\\"…\\\"}} changes the voice and keeps the rest of the TTS configuration. You cannot clear a field by omitting it. llm.graph_data is the exception: it is not merged. A sent graph_data replaces the stored graph as a whole. ## Changing the LLM, STT model or voice Selections use the same id-based contract as Create AI Agent: - Send stt.provider_id + stt.model_id or tts.provider_id + tts.voice_id. The reference is resolved again against the provider catalog, and the stored names are refreshed. - Send llm.llm_id, or graph_data.agentDefaults.llm.llm_id for a flow agent. The LLM fields on the agent are refreshed from the model catalog. ## Flow agents - To change a flow agent's default STT model, LLM or voice, send llm.llm_type: \\\"flow\\\" and the complete llm.graph_data with the new ids in agentDefaults. A partial graph replaces the stored one. See the flow_graph request example. - graph_data without llm.llm_type returns 422. - The server fills provider, model and voice names into the graph, then validates it. An id the catalog does not know returns 422 with the graph path in error_details, for example llm.graph_data.agentDefaults.tts.voice_id. - Root stt and tts are not used by flow agents. The same 422 checks as create apply: the referenced record must exist, be ACTIVE, support the agent's llm_type and, for a custom model, belong to your organization. ## Rejected LLM fields llm.model_provider, llm.model_name and llm.model_display_name are not accepted. The model is chosen by llm.llm_id alone, and those fields are always refilled from the catalog. A request that sends any of them returns 400, and every offending field is named in error_details: json { \\\"status\\\": \\\"error\\\", \\\"message\\\": \\\"Agent validation failed\\\", \\\"error_details\\\": { \\\"llm.model_name\\\": \\\"llm.model_name is not accepted on v3 update; send llm.llm_id to change the model\\\" } } Get AI Agent returns those three fields inside data.llm. A client that reads an agent and sends the same llm object back gets this 400. Remove the three fields, or send only the fields you change. ## Field notes - model_temperature: when omitted, the stored value is kept, even when llm_id changes. The new model's temperature applies only if the agent had none. A sent value, 0 included, is stored as is. - vad_activation_threshold: omitting the key keeps the stored value. A number from 0.10 to 0.90 replaces it. - wait_time_before_detecting_end_of_speech and max_endpointing_delay apply to flow agents only. When a request changes either one, max_endpointing_delay must stay greater than the wait time after the merge, otherwise the request returns 422. Sending vad_activation_threshold: null does not clear the stored value yet. The response shows the key removed, but the stored value stays and later reads and calls keep using it. Until a fix ships, you can set a new value but cannot clear one. ## Versioning Every successful update writes a new agent version. The response carries current_version and, when the version has a label, current_version_name. ## Response envelope Every v3 response uses the same envelope: | Field | Meaning | | --- | --- | | status | success or error. Always lowercase. | | message | A human-readable summary. | | data | The result. Absent on errors. | | error_details | A map from field path to message. Present only on some errors. | Fields with no value are omitted rather than returned as null. The response message and operation_type depend on the agent type: Simple agent updated successfully / UPDATE, Flow builder agent updated successfully / UPDATE_FLOW_BUILDER, or Agentic agent updated successfully / UPDATE_AGENTIC. ## Status codes | Code | When | | --- | --- | | 200 | Updated. The body carries the full agent. | | 400 | The request sent llm.model_provider, llm.model_name or llm.model_display_name. | | 403 | The agent belongs to another organization or workspace. | | 404 | No such agent. | | 422 | Validation failed, or a referenced catalog record was missing, inactive or incompatible. |\",\"url\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent\",\"mainEntityOfPage\":{\"@id\":\"https://docs.verbex.ai/api-reference/ai-agents-v3/update-ai-agent#webpage\"},\"dateModified\":\"2026-11-01T23:11:06.732Z\",\"publisher\":{\"@id\":\"https://docs.verbex.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.verbex.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Verbex Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Verbex Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"Getting an API Key","href":"/api-reference/introduction"},{"title":"Migrate from v2 to v3","href":"/api-reference/ai-agents-v3/migrate-from-v2"}]},{"group":"AI Agents v3","pages":[{"title":"List AI Agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v3/ai-agents","href":"/api-reference/ai-agents-v3/list-ai-agents"},{"title":"Create AI Agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v3/ai-agents","href":"/api-reference/ai-agents-v3/create-ai-agent"},{"title":"Get AI Agent","description":"Retrieve one agent by id, with every catalog reference resolved to names.\n\nThe shape depends on the agent type. A `simple` agent has root `llm`, `stt` and `tts`. A `flow` agent has the root `llm` with `graph_data`, filled from the flow-default model, and no root `stt` or `tts`. See the two `200` examples.\n\n\u003cWarning>\n**The v2 equivalent, [`GET /v2/ai-agents/{agent_id}`](/api-reference/ai-agents-v2/get-ai-agent), is deprecated and stops working on November 30, 2026.** This is the v3 endpoint. [Migrate from v2 to v3](/api-reference/ai-agents-v3/migrate-from-v2) before that date.\n\u003c/Warning>\n\n## Status codes\n\n| Code | When |\n| --- | --- |\n| `200` | The agent exists, is `ACTIVE` and is in your scope. |\n| `400` | The API key resolves to neither a workspace nor an organization. |\n| `403` | The agent exists but belongs to another organization or workspace. |\n| `404` | No such agent, **or** the agent is `INACTIVE` or `DELETED`. |\n\nErrors use the envelope too, so `403` and `404` carry a body:\n\n```json\n{\n \"status\": \"error\",\n \"message\": \"Agent not found with ID: 3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42\"\n}\n```\n\nTo see agents that are not `ACTIVE`, use [List AI Agents](/api-reference/ai-agents-v3/list-ai-agents) with `agent_status`.\n\n## Response envelope\n\nEvery v3 response uses the same envelope:\n\n| Field | Meaning |\n| --- | --- |\n| `status` | `success` or `error`. Always lowercase. |\n| `message` | A human-readable summary. |\n| `data` | The result. Absent on errors. |\n| `error_details` | A map from field path to message. Present only on some errors. |\n\nFields with no value are omitted rather than returned as `null`. List items behave differently; see [List AI Agents](/api-reference/ai-agents-v3/list-ai-agents).\n\nThe response message is `Agent retrieved successfully` and `operation_type` is `GET`.\n\n\u003cWarning>\n`data.llm` includes the resolved `model_provider`, `model_name` and `model_display_name`. [Update AI Agent](/api-reference/ai-agents-v3/update-ai-agent) rejects those three fields with `400`. Do not send `data.llm` back unchanged: remove those fields, or send only the fields you change.\n\u003c/Warning>","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v3/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v3/get-ai-agent"},{"title":"Update AI Agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v3/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v3/update-ai-agent"},{"title":"Delete AI Agent","description":"Delete an agent. This is a soft delete, and the response carries the agent.\n\n\u003cWarning>\n**The v2 equivalent, [`DELETE /v2/ai-agents/{agent_id}`](/api-reference/ai-agents-v2/delete-ai-agent), is deprecated and stops working on November 30, 2026.** This is the v3 endpoint. [Migrate from v2 to v3](/api-reference/ai-agents-v3/migrate-from-v2) before that date.\n\u003c/Warning>\n\n## Soft delete\n\nThe agent record is kept and its status moves to `INACTIVE`. After the delete:\n\n- [Get AI Agent](/api-reference/ai-agents-v3/get-ai-agent) returns `404` for the agent.\n- [List AI Agents](/api-reference/ai-agents-v3/list-ai-agents) returns it only when you filter on `agent_status=INACTIVE`.\n\nThe caller must be in the agent's scope. A workspace-scoped key must match the agent's workspace; otherwise the key's organization must match the agent's organization.\n\n## Response envelope\n\nEvery v3 response uses the same envelope:\n\n| Field | Meaning |\n| --- | --- |\n| `status` | `success` or `error`. Always lowercase. |\n| `message` | A human-readable summary. |\n| `data` | The result. Absent on errors. |\n| `error_details` | A map from field path to message. Present only on some errors. |\n\nFields with no value are omitted rather than returned as `null`.\n\n```json\n{\n \"status\": \"success\",\n \"message\": \"Agent deactivated successfully\",\n \"data\": {\n \"ai_agent_id\": \"3f6c2a1e-8b4d-4c9a-9e2f-7d1b5a6c0e42\",\n \"agent_name\": \"Customer Support Agent\",\n \"agent_status\": \"ACTIVE\",\n \"operation_type\": \"DEACTIVATE\"\n }\n}\n```\n\n`data` is the agent as it was **before** deactivation, so `agent_status` still reads `ACTIVE`.\n\n## Status codes\n\n| Code | When |\n| --- | --- |\n| `200` | Deleted. |\n| `403` | The agent belongs to another organization or workspace. |\n| `404` | No such agent. |","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v3/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v3/delete-ai-agent"}]},{"group":"AI Agents v2","pages":[{"title":"List AI Agents","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/","href":"/api-reference/ai-agents-v2/list-ai-agents"},{"title":"Create AI Agent","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json post /v2/ai-agents/","href":"/api-reference/ai-agents-v2/create-ai-agent"},{"title":"Get AI Agent","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v2/get-ai-agent"},{"title":"Update AI Agent","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json put /v2/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v2/update-ai-agent"},{"title":"Delete AI Agent","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json delete /v2/ai-agents/{agent_id}","href":"/api-reference/ai-agents-v2/delete-ai-agent"}]},{"group":"LLM Models","pages":[{"title":"List LLM models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/llm-models","href":"/api-reference/llm-models/list-llm-models"},{"title":"Get LLM model","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/llm-models/{llm_model_id}","href":"/api-reference/llm-models/get-llm-model"}]},{"group":"Speech Providers","pages":[{"title":"List STT providers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v3/stt/providers","href":"/api-reference/speech-providers/list-stt-providers"},{"title":"Get STT provider","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v3/stt/providers/{provider_name}","href":"/api-reference/speech-providers/get-stt-provider"},{"title":"List TTS providers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v3/tts/providers","href":"/api-reference/speech-providers/list-tts-providers"},{"title":"Get TTS provider","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v3/tts/providers/{provider_name}","href":"/api-reference/speech-providers/get-tts-provider"}]},{"group":"Built-in Tools","pages":[{"title":"List built-in tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{ai_agent_id}/builtin-tools/","href":"/api-reference/built-in-tools/list-built-in-tools"},{"title":"Create built-in tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/ai-agents/{ai_agent_id}/builtin-tools/","href":"/api-reference/built-in-tools/create-built-in-tool"},{"title":"Get built-in tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{ai_agent_id}/builtin-tools/{tool_id}","href":"/api-reference/built-in-tools/get-built-in-tool"},{"title":"Update built-in tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v2/ai-agents/{ai_agent_id}/builtin-tools/{tool_id}","href":"/api-reference/built-in-tools/update-built-in-tool"},{"title":"Delete built-in tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v2/ai-agents/{ai_agent_id}/builtin-tools/{tool_id}","href":"/api-reference/built-in-tools/delete-built-in-tool"}]},{"group":"Custom Tools","pages":[{"title":"List custom tools","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{ai_agent_id}/custom-tools/","href":"/api-reference/custom-tools/list-custom-tools"},{"title":"Create custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/ai-agents/{ai_agent_id}/custom-tools/","href":"/api-reference/custom-tools/create-custom-tool"},{"title":"Get custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{ai_agent_id}/custom-tools/{tool_id}","href":"/api-reference/custom-tools/get-custom-tool"},{"title":"Update custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v2/ai-agents/{ai_agent_id}/custom-tools/{tool_id}","href":"/api-reference/custom-tools/update-custom-tool"},{"title":"Delete custom tool","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v2/ai-agents/{ai_agent_id}/custom-tools/{tool_id}","href":"/api-reference/custom-tools/delete-custom-tool"}]},{"group":"Calls","pages":[{"title":"Create Web Call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/calls/create-web-call","href":"/api-reference/calls/create-web-call"},{"title":"Create Web Call (Public Shared)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/calls/public/create-web-call","href":"/api-reference/calls/create-web-call-public-shared"},{"title":"Dial Outbound Phone Call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/calls/dial-outbound-phone-call","href":"/api-reference/calls/dial-outbound-phone-call"},{"title":"Get Call","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/calls/{call_id}","href":"/api-reference/calls/get-call"},{"title":"List Calls","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/calls/","href":"/api-reference/calls/list-calls"}]},{"group":"Call Recording","pages":[{"title":"Get Signed URL for Call Recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/call-recording/signed-url","href":"/api-reference/call-recording/get-signed-url-for-call-recording"},{"title":"Download Call Recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/call-recording/download","href":"/api-reference/call-recording/download-call-recording"}]},{"group":"Post-call Analysis","pages":[{"title":"Get post-call analysis configuration for an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{ai_agent_id}/postcall-analysis","href":"/api-reference/post-call-analysis/get-post-call-analysis-configuration-for-an-agent"},{"title":"Update an existing post-call analysis configuration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v2/ai-agents/{ai_agent_id}/postcall-analysis","href":"/api-reference/post-call-analysis/update-an-existing-post-call-analysis-configuration"},{"title":"Create a new post-call analysis configuration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v2/ai-agents/{ai_agent_id}/postcall-analysis","href":"/api-reference/post-call-analysis/create-a-new-post-call-analysis-configuration"},{"title":"Delete an existing post-call analysis configuration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v2/ai-agents/{ai_agent_id}/postcall-analysis","href":"/api-reference/post-call-analysis/delete-an-existing-post-call-analysis-configuration"},{"title":"Get Post Call Analysis Results","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v2/ai-agents/{ai_agent_id}/postcall-analysis/results/{call_id}","href":"/api-reference/post-call-analysis/get-post-call-analysis-results"}]},{"group":"Phone Numbers","pages":[{"title":"Retrieve a paginated list of all phone numbers configured in your PIA Platform account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/phone-numbers/","href":"/api-reference/phone-numbers/retrieve-a-paginated-list-of-all-phone-numbers-configured-in-your-pia-platform-account"},{"title":"Create a new phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/phone-numbers/","href":"/api-reference/phone-numbers/create-a-new-phone-number"},{"title":"Retrieve detailed information about a specific phone number configuration","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/phone-numbers/{phone_number_id}","href":"/api-reference/phone-numbers/retrieve-detailed-information-about-a-specific-phone-number-configuration"},{"title":"Remove a phone number configuration from the PIA Platform","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/phone-numbers/{phone_number_id}","href":"/api-reference/phone-numbers/remove-a-phone-number-configuration-from-the-pia-platform"},{"title":"Update the configuration of an existing phone number","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/phone-numbers/{phone_number_id}","href":"/api-reference/phone-numbers/update-the-configuration-of-an-existing-phone-number"}]},{"group":"Knowledge Bases","pages":[{"title":"List Knowledge Bases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v1/knowledge-bases","href":"/api-reference/knowledge-bases/list-knowledge-bases"},{"title":"Create Knowledge Base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v1/knowledge-bases","href":"/api-reference/knowledge-bases/create-knowledge-base"},{"title":"Get Knowledge Base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v1/knowledge-bases/{kb_id}","href":"/api-reference/knowledge-bases/get-knowledge-base"},{"title":"Delete Knowledge Base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v1/knowledge-bases/{kb_id}","href":"/api-reference/knowledge-bases/delete-knowledge-base"},{"title":"Update Knowledge Base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v1/knowledge-bases/{kb_id}","href":"/api-reference/knowledge-bases/update-knowledge-base"},{"title":"Upload a File","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v1/knowledge-bases/{kb_id}/documents/file","href":"/api-reference/knowledge-bases/upload-a-file"},{"title":"Discover a Website's URLs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v1/knowledge-bases/documents/website/sitemaps","href":"/api-reference/knowledge-bases/discover-a-websites-urls"},{"title":"Crawl Web Pages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v1/knowledge-bases/{kb_id}/documents/website","href":"/api-reference/knowledge-bases/crawl-web-pages"},{"title":"List Documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v1/knowledge-bases/{kb_id}/documents","href":"/api-reference/knowledge-bases/list-documents"},{"title":"Get Document Status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v1/knowledge-bases/{kb_id}/documents/{document_id}/status","href":"/api-reference/knowledge-bases/get-document-status"},{"title":"Inspect Indexed Chunks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v1/knowledge-bases/{kb_id}/documents/{document_id}/chunks","href":"/api-reference/knowledge-bases/inspect-indexed-chunks"},{"title":"Delete a Document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v1/knowledge-bases/{kb_id}/documents/{document_id}","href":"/api-reference/knowledge-bases/delete-a-document"},{"title":"Semantic Search","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v1/vector/search","href":"/api-reference/knowledge-bases/semantic-search"}]},{"group":"Prompt Generation","pages":[{"title":"Generate Prompt","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/prompt-generation/prompt/generate","href":"/api-reference/prompt-generation/generate-prompt"}]},{"group":"Public Sharing","pages":[{"title":"Create Share","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/public-sharing/","href":"/api-reference/public-sharing/create-share"},{"title":"Get Share","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/public-sharing/{ai_agent_id}","href":"/api-reference/public-sharing/get-share"},{"title":"Delete Share","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/public-sharing/{share_id}","href":"/api-reference/public-sharing/delete-share"}]},{"group":"Webhook Subscriptions","pages":[{"title":"Create a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/public/webhook/subscription","href":"/api-reference/webhook-subscriptions/create-a-subscription"},{"title":"Get a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/public/webhook/subscription/{id}","href":"/api-reference/webhook-subscriptions/get-a-subscription"},{"title":"Update a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /v1/public/webhook/subscription/{id}","href":"/api-reference/webhook-subscriptions/update-a-subscription"},{"title":"Delete a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/public/webhook/subscription/{id}","href":"/api-reference/webhook-subscriptions/delete-a-subscription"},{"title":"Rotate the signing secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/public/webhook/subscription/{id}/rotate/secret","href":"/api-reference/webhook-subscriptions/rotate-the-signing-secret"},{"title":"List subscriptions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/public/webhook/subscriptions","href":"/api-reference/webhook-subscriptions/list-subscriptions"}]},{"group":"API Keys","pages":[{"title":"List API Keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/api-keys/","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create API Key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/api-keys/","href":"/api-reference/api-keys/create-api-key"},{"title":"Get API Key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/api-keys/{key_id}","href":"/api-reference/api-keys/get-api-key"},{"title":"Revoke API Key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/api-keys/{key_id}/revoke","href":"/api-reference/api-keys/revoke-api-key"}]}]},{"tab":"Video Tutorials","pages":[{"title":"Video Tutorials","href":"/video-tutorials/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"basePath":"","title":"Update AI Agent - Verbex Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}