import Retell from 'retell-sdk';const client = new Retell({ apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted});const phoneCallResponse = await client.call.registerPhoneCall({ agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',});console.log(phoneCallResponse.agent_id);
import os
from retell import Retell
client = Retell(
api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted
)
phone_call_response = client.call.register_phone_call(
agent_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
)
print(phone_call_response.agent_id)
{
"status": "error",
"message": "An unexpected server error occurred."
}
Custom Telephony
Register Phone Call
Register a new phone call for custom telephony
POST
/
v2
/
register-phone-call
JavaScript
import Retell from 'retell-sdk';const client = new Retell({ apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted});const phoneCallResponse = await client.call.registerPhoneCall({ agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',});console.log(phoneCallResponse.agent_id);
import os
from retell import Retell
client = Retell(
api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted
)
phone_call_response = client.call.register_phone_call(
agent_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
)
print(phone_call_response.agent_id)
For this particular call, override agent configuration with these settings. This allows you to customize agent behavior for individual calls without modifying the base agent.
An arbitrary object for storage purpose only. You can put anything here like your internal customer id associated with the call. Not used for processing. You can later get this field from the call object.
Add optional dynamic variables in key value pairs of string that injects into your Response Engine prompt and tool description. Only applicable for Response Engine.
Tag pointing at the agent version used for this call, captured at call creation time and frozen thereafter (unaffected by later tag reassignments). Populated whether the caller dispatched by tag, numeric version, "latest", or "latest_published" — when the caller specified a tag, that tag wins; otherwise the most-recently- assigned tag on the resolved version is used. Absent when no tag points at the resolved version (or for calls created before this field was introduced).
An arbitrary object for storage purpose only. You can put anything here like your internal customer id associated with the call. Not used for processing. You can later get this field from the call object.
Add optional dynamic variables in key value pairs of string that injects into your Response Engine prompt and tool description. Only applicable for Response Engine.
Data storage setting for this call's agent. "everything" stores all data, "everything_except_pii" excludes PII when possible, "basic_attributes_only" stores only metadata.
Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.
Transcription of the call. Available after call ends.
Example:
"Agent: hi how are you doing?\nUser: Doing pretty well. How are you?\nAgent: That's great to hear! I'm doing well too, thanks! What's up?\nUser: I don't have anything in particular.\nAgent: Got it, just checking in!\nUser: Alright. See you.\nAgent: have a nice day\n"
Transcript of the call weaved with tool call invocation and results. It precisely captures when (at what utterance, which word) the tool was invoked and what was the result. Available after call ends.
Transcript of the call weaved with tool call invocation and results, without PII. It precisely captures when (at what utterance, which word) the tool was invoked and what was the result. Available after call ends.
Tool call invocations and results of integration tools run before the session started (pre-session). Stored separately from the main transcript. Available after call ends if pre-session integration tools ran.
Pre-session integration tool call invocations and results, without PII. Available after call ends if pre-session integration tools ran and PII scrubbing is enabled.
Tool call invocations and results of integration tools run after post-call analysis (post-session). Stored separately from the main transcript. Available after call ends if post-session integration tools ran.
Post-session integration tool call invocations and results, without PII. Available after call ends if post-session integration tools ran and PII scrubbing is enabled.
Public log of the call, containing details about all the requests and responses received in LLM WebSocket, latency tracking for each turntaking, helpful for debugging and tracing. Available after call ends.
URL to the knowledge base retrieved contents of the call. Available after call ends if the call utilizes knowledge base feature. It consists of the respond id and the retrieved contents related to that response. It's already rendered in call history tab of dashboard, and you can also manually download and check against the transcript to view the knowledge base retrieval results.
The destination number or identifier where the call was transferred to. Only populated when the disconnection reason was call_transfer. Can be a phone number or a SIP URI. SIP URIs are prefixed with "sip:" and may include a ";transport=..." portion (if transport is known) where the transport type can be "tls", "tcp" or "udp".
Post call analysis that includes information such as sentiment, status, summary, and custom defined data to extract. Available after call ends. Subscribe to call_analyzed webhook event type to receive it once ready.
LLM token usage of the call, available after call ends. Not populated if using custom LLM, realtime API, or no LLM call is made.
Show child attributes
Was this page helpful?
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Retell AI","description":"Explore Retell AI docs to learn how to build, test, deploy, and optimize AI voice agents with APIs, integrations, conversation flows, and production-ready tools.","colors":{"primary":"#606A78","light":"#F5F5FA","dark":"#172131"},"logo":{"light":"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-light.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=64eb26a2d3cc9a67ee3ea0bfe086dd14","dark":"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-dark.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=08472a0c78599498b85d23348d7826f6"},"favicon":"https://mintcdn.com/retellai/TsBk7Stx4694-7p1/logo/favicon-light.ico?fit=max\u0026auto=format\u0026n=TsBk7Stx4694-7p1\u0026q=85\u0026s=4e90f4db5e89b5ec7fe249a4844c2d97","api":{"openapi":["openapi-final.yaml"],"playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.retellai.com"}},"navbar":{"links":[{"icon":"message-circle-question-mark","href":"https://docs.retellai.com/general/support","label":"Support"},{"icon":"chart-line","href":"https://status.retellai.com/","label":"Status"},{"icon":"book","href":"https://www.retellai.com/changelog","label":"Changelog"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.retellai.com"}},"footer":{"socials":{"x":"https://x.com/retellai","linkedin":"https://www.linkedin.com/company/98828489","github":"https://github.com/RetellAI","instagram":"https://www.instagram.com/retell_ai","youtube":"https://www.youtube.com/@retellai"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"styling":{"codeblocks":"dark","latex":true},"integrations":{"mixpanel":{"projectToken":"c8676d3561adb5eefc366aa2a66725bc"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"retellai","hasAudioNarration":false,"actualSubdomain":"retellai","customDomains":["docs.retellai.com"],"gitSource":{"type":"github","owner":"retellai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae825ab21b4422fadc6ad73","collectionId":"b4ff8e8c-150d-4079-881b-b7ec427c9421","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae825ab21b4422fadc6ad73"},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae825ab21b4422fadc6ad73","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Guides","count":214},{"language":"default","tag":"API Reference","count":107},{"language":"default","tag":"Build","count":68},{"language":"default","tag":"Deploy","count":35},{"language":"default","tag":"Integrations","count":30},{"language":"default","tag":"Conversation flow agents","count":24},{"language":"default","tag":"Deprecations","count":22},{"language":"default","tag":"CRM","count":21},{"language":"default","tag":"Detailed Deprecation Guide","count":21},{"language":"default","tag":"Monitor","count":17}]},"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":"instinct-self-updating-docs","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":[{"filePath":"style.css","content":"@media (min-width:1024px){#navbar .flex-1:has(>[data-slot=context-menu-trigger]),#navbar .flex-1:has(>a>.nav-logo){flex:none!important;width:15rem}#navbar .justify-end:has(.nav-tabs),#navbar .ustify-end:has(.nav-tabs){justify-content:space-between!important;margin-left:0!important}#navbar .flex:has(>.justify-end),#navbar .flex:has(>.ustify-end){flex:1!important}#navbar .nav-tabs{white-space:nowrap}}.max-w-prose,.max-w-xl,article{max-width:48rem!important}video.scroll-play{cursor:zoom-in}.video-zoom-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:4vmin;background:rgba(0,0,0,.8);backdrop-filter:blur(2px);cursor:zoom-out}.video-zoom-media{max-width:92vw;max-height:92vh;width:auto;height:auto;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.5);cursor:default}.video-zoom-close{position:fixed;top:16px;right:20px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:999px;background:rgba(255,255,255,.15);color:#fff;font-size:24px;line-height:1;cursor:pointer}.video-zoom-close:hover{background:rgba(255,255,255,.3)}.ui-btn{background-color:#f4f5f7!important;color:#1f2328!important;border:1px solid #d0d5dd!important;border-bottom-width:2px!important;border-radius:6px!important;padding:.1em .42em!important}[data-theme=dark] .ui-btn,html.dark .ui-btn{background-color:#21252d!important;color:#e6e8eb!important;border-color:#3a4048!important}img[src$=\"/images/icons/wss-badge.svg\"]{width:auto!important;height:15px!important}a[aria-current=page] img[src$=\"/images/icons/wss-badge.svg\"]{content:url(\"data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2227%22 height=%2215%22 viewBox=%220 0 27 15%22 role=%22img%22 aria-label=%22WSS%22%3E %3Crect width=%2227%22 height=%2215%22 rx=%224%22 fill=%22%23F54A00%22/%3E %3Ctext x=%2213.5%22 y=%2210.7%22 text-anchor=%22middle%22 font-family=%22ui-sans-serif, system-ui, -apple-system, Segoe UI, Inter, Helvetica, Arial, sans-serif%22 font-size=%228.8%22 font-weight=%22700%22 fill=%22%23FFFFFF%22%3EWSS%3C/text%3E %3C/svg%3E\")}"}],"page":{"pagePath":"api-references/register-phone-call","slug":"/api-references/register-phone-call","pageMetadata":{"title":"Register Phone Call","openapi":"openapi-final post /v2/register-phone-call","description":"Register a new phone call for custom telephony","href":"/api-references/register-phone-call"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Register a new phone call for custom telephony\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=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":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Register Phone Call","openapi":"openapi-final post /v2/register-phone-call","description":"Register a new phone call for custom telephony","href":"/api-references/register-phone-call"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/retellai/e3fe5c9b64f9e274/scroll-play-videos.js"],"openApiReferenceData":{"operation":{"description":"Register a new phone call for custom telephony","operationId":"registerPhoneCall","requestBody":"0083de33-83a8-4c80-8419-fecc1f28de12","responses":{"201":"f1791758-6d42-4a5f-b992-212bebc90931","400":"5f99b14c-fc34-4be1-91be-5709c029e98b","401":"4a5ed9ea-06d6-47ab-b22f-5cf494095ba3","402":"910927b8-553c-4973-92ef-386e2c65add6","422":"f7cf754c-85dc-409e-a672-b73c9e196823","429":"8e4b9dca-541f-40bd-88e3-8330a552b1a9","500":"4a904419-54f8-49c9-bf78-bf1a72d0648d"},"x-codeSamples":[{"lang":"JavaScript","source":"import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneCallResponse = await client.call.registerPhoneCall({\n agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n});\n\nconsole.log(phoneCallResponse.agent_id);"},{"lang":"Python","source":"import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get(\"RETELL_API_KEY\"), # This is the default and can be omitted\n)\nphone_call_response = client.call.register_phone_call(\n agent_id=\"oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD\",\n)\nprint(phone_call_response.agent_id)"}],"method":"post","type":"path","servers":["1d7d9bd3-7585-446f-82d0-080dd7d50e70"],"security":["1af9f4ad-4a6e-494a-853d-46841379a6c2"],"path":"/v2/register-phone-call","baseUrlOptions":["https://api.retellai.com"],"title":"","codeSamples":[{"lang":"JavaScript","source":"import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneCallResponse = await client.call.registerPhoneCall({\n agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n});\n\nconsole.log(phoneCallResponse.agent_id);"},{"lang":"Python","source":"import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get(\"RETELL_API_KEY\"), # This is the default and can be omitted\n)\nphone_call_response = client.call.register_phone_call(\n agent_id=\"oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD\",\n)\nprint(phone_call_response.agent_id)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["agent_id"],"properties":{"agent_id":{"type":"string","minLength":1,"example":"oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD","description":"The agent to use for the call.","isRequired":true,"uniqueKey":"agent_id","typeLabel":"string"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to use for the call.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","uniqueKey":"agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the agent to use for the call.","minimum":0,"example":1,"uniqueKey":"agent_version.oneOf.1","typeLabel":"integer"}],"uniqueKey":"agent_version","typeLabel":"string | integer"},"agent_override":{"type":"object","description":"For this particular call, override agent configuration with these settings. This allows you to customize agent behavior for individual calls without modifying the base agent.","properties":{"agent":{"type":"object","properties":{"response_engine":{"oneOf":[{"type":"object","description":"The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.","required":["type","llm_id"],"example":{"type":"retell-llm","llm_id":"llm_234sdertfsdsfsdf","version":0},"properties":{"type":{"type":"string","enum":["retell-llm"],"description":"type of the Response Engine.","isRequired":true,"uniqueKey":"agent_override.agent.response_engine.oneOf.0.type","typeLabel":"enum\u003cstring>"},"llm_id":{"type":"string","description":"id of the Retell LLM Response Engine.","isRequired":true,"uniqueKey":"agent_override.agent.response_engine.oneOf.0.llm_id","typeLabel":"string"},"version":{"oneOf":[{"type":"number","example":0,"description":"Version of the Retell LLM Response Engine.","uniqueKey":"agent_override.agent.response_engine.oneOf.0.version.oneOf.0","typeLabel":"number"},{"type":"null","example":0,"description":"Version of the Retell LLM Response Engine.","uniqueKey":"agent_override.agent.response_engine.oneOf.0.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.response_engine.oneOf.0.version","typeLabel":"number | null"}},"uniqueKey":"agent_override.agent.response_engine.oneOf.0","typeLabel":"object"},{"type":"object","description":"The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.","required":["type","llm_websocket_url"],"example":{"type":"retell-llm"},"properties":{"type":{"type":"string","enum":["custom-llm"],"description":"type of the Response Engine.","isRequired":true,"uniqueKey":"agent_override.agent.response_engine.oneOf.1.type","typeLabel":"enum\u003cstring>"},"llm_websocket_url":{"type":"string","description":"LLM websocket url of the custom LLM.","isRequired":true,"uniqueKey":"agent_override.agent.response_engine.oneOf.1.llm_websocket_url","typeLabel":"string"}},"uniqueKey":"agent_override.agent.response_engine.oneOf.1","typeLabel":"object"},{"type":"object","description":"The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.","required":["type","conversation_flow_id"],"example":{"type":"retell-llm","version":0},"properties":{"type":{"type":"string","enum":["conversation-flow"],"description":"type of the Response Engine.","isRequired":true,"uniqueKey":"agent_override.agent.response_engine.oneOf.2.type","typeLabel":"enum\u003cstring>"},"conversation_flow_id":{"type":"string","description":"ID of the Conversation Flow Response Engine.","isRequired":true,"uniqueKey":"agent_override.agent.response_engine.oneOf.2.conversation_flow_id","typeLabel":"string"},"version":{"oneOf":[{"type":"number","example":0,"description":"Version of the Conversation Flow Response Engine.","uniqueKey":"agent_override.agent.response_engine.oneOf.2.version.oneOf.0","typeLabel":"number"},{"type":"null","example":0,"description":"Version of the Conversation Flow Response Engine.","uniqueKey":"agent_override.agent.response_engine.oneOf.2.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.response_engine.oneOf.2.version","typeLabel":"number | null"}},"uniqueKey":"agent_override.agent.response_engine.oneOf.2","typeLabel":"object"}],"uniqueKey":"agent_override.agent.response_engine","typeLabel":"object"},"agent_name":{"oneOf":[{"type":"string","example":"Jarvis","description":"The name of the agent. Only used for your own reference.","uniqueKey":"agent_override.agent.agent_name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Jarvis","description":"The name of the agent. Only used for your own reference.","uniqueKey":"agent_override.agent.agent_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.agent_name","typeLabel":"string | null"},"version_description":{"oneOf":[{"type":"string","example":"Customer support agent for handling product inquiries","description":"Optional description of the agent version. Used for your own reference and documentation.","uniqueKey":"agent_override.agent.version_description.oneOf.0","typeLabel":"string"},{"type":"null","example":"Customer support agent for handling product inquiries","description":"Optional description of the agent version. Used for your own reference and documentation.","uniqueKey":"agent_override.agent.version_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.version_description","typeLabel":"string | null"},"version_title":{"oneOf":[{"type":"string","example":"Production hotfix","description":"Optional title of the agent version. Used for your own reference.","uniqueKey":"agent_override.agent.version_title.oneOf.0","typeLabel":"string"},{"type":"null","example":"Production hotfix","description":"Optional title of the agent version. Used for your own reference.","uniqueKey":"agent_override.agent.version_title.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.version_title","typeLabel":"string | null"},"voice_id":{"type":"string","example":"retell-Cimo","description":"Unique voice id used for the agent. Find list of available voices and their preview in Dashboard.","uniqueKey":"agent_override.agent.voice_id","typeLabel":"string"},"voice_model":{"oneOf":[{"type":"string","enum":["eleven_flash_v2","eleven_flash_v2_5","eleven_multilingual_v2","eleven_v3","eleven_v3_conversational","eleven_v4","eleven_v4_turbo","sonic-3","sonic-3-latest","sonic-3.5","sonic-3.6","tts-1","gpt-4o-mini-tts","speech-02-turbo","speech-2.8-turbo","s1","s2-pro","s2.1-pro","drama-3","inworld-tts-2","inworld-tts-2-flash",null],"description":"Select the voice model used for the selected voice. Each provider has a set of available voice models. Set to null to remove voice model selection, and default ones will apply. Check out dashboard for more details of each voice model.","uniqueKey":"agent_override.agent.voice_model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["eleven_flash_v2","eleven_flash_v2_5","eleven_multilingual_v2","eleven_v3","eleven_v3_conversational","eleven_v4","eleven_v4_turbo","sonic-3","sonic-3-latest","sonic-3.5","sonic-3.6","tts-1","gpt-4o-mini-tts","speech-02-turbo","speech-2.8-turbo","s1","s2-pro","s2.1-pro","drama-3","inworld-tts-2","inworld-tts-2-flash",null],"description":"Select the voice model used for the selected voice. Each provider has a set of available voice models. Set to null to remove voice model selection, and default ones will apply. Check out dashboard for more details of each voice model.","uniqueKey":"agent_override.agent.voice_model.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.voice_model","typeLabel":"enum\u003cstring> | null"},"fallback_voice_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.fallback_voice_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["cartesia-Cimo","minimax-Cimo"],"description":"When TTS provider for the selected voice is experiencing outages, we would use fallback voices listed here for the agent. Voice id and the fallback voice ids must be from different TTS providers. The system would go through the list in order, if the first one in the list is also having outage, it would use the next one. Set to null to remove voice fallback for the agent.","uniqueKey":"agent_override.agent.fallback_voice_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"example":["cartesia-Cimo","minimax-Cimo"],"description":"When TTS provider for the selected voice is experiencing outages, we would use fallback voices listed here for the agent. Voice id and the fallback voice ids must be from different TTS providers. The system would go through the list in order, if the first one in the list is also having outage, it would use the next one. Set to null to remove voice fallback for the agent.","uniqueKey":"agent_override.agent.fallback_voice_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.fallback_voice_ids","typeLabel":"string[] | null"},"voice_temperature":{"type":"number","example":1,"description":"Controls how stable the voice is. Value ranging from [0,2]. Lower value means more stable, and higher value means more variant speech generation. Check the dashboard to see what provider supports this feature. If unset, default value 1 will apply.","uniqueKey":"agent_override.agent.voice_temperature","typeLabel":"number"},"voice_speed":{"type":"number","minimum":0.5,"maximum":2,"example":1,"description":"Controls speed of voice. Value ranging from [0.5,2]. Lower value means slower speech, while higher value means faster speech rate. If unset, default value 1 will apply.","uniqueKey":"agent_override.agent.voice_speed","typeLabel":"number"},"enable_dynamic_voice_speed":{"type":"boolean","example":true,"description":"If set to true, will enable dynamic voice speed adjustment based on the user's speech rate and conversation context. If unset, default value false will apply.","uniqueKey":"agent_override.agent.enable_dynamic_voice_speed","typeLabel":"boolean"},"enable_dynamic_responsiveness":{"type":"boolean","example":true,"description":"If set to true, the agent will dynamically adjust how quickly it responds based on the user's speech rate and past turn-taking behavior in the call. If unset, default value false will apply.","uniqueKey":"agent_override.agent.enable_dynamic_responsiveness","typeLabel":"boolean"},"volume":{"type":"number","example":1,"description":"If set, will control the volume of the agent. Value ranging from [0,2]. Lower value means quieter agent speech, while higher value means louder agent speech. If unset, default value 1 will apply.","uniqueKey":"agent_override.agent.volume","typeLabel":"number"},"enable_expressive_mode":{"type":"boolean","example":true,"description":"Master toggle for expressive mode. When true, the agent may add expressive voice tags to the audio it generates. Only applicable for platform voices. If unset, defaults to false.","uniqueKey":"agent_override.agent.enable_expressive_mode","typeLabel":"boolean"},"expressive_emotion_tags":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["empathetic","excited","happy","curious","surprised","sigh","clear throat","pause","long pause","emphasis"],"uniqueKey":"agent_override.agent.expressive_emotion_tags.items.[INDEX]","typeLabel":"enum\u003cstring>"},"example":["empathetic","excited","sigh","clear throat","emphasis"],"description":"The expressive voice tags Retell pre-teaches the model to use when enable_expressive_mode is true. Custom tags defined in the system prompt are still allowed. If empty, the agent follows general expressive guidance without a fixed tag set.","uniqueKey":"agent_override.agent.expressive_emotion_tags","typeLabel":"enum\u003cstring>[]"},"expressive_mode_prompt":{"oneOf":[{"type":"string","example":"Use [sigh] for thoughtful pauses and [excited] for good news.","description":"Custom expressive voice guidance to use instead of the default Retell expressive prompt when enable_expressive_mode is true. If omitted or blank, the default expressive prompt will be used.","uniqueKey":"agent_override.agent.expressive_mode_prompt.oneOf.0","typeLabel":"string"},{"type":"null","example":"Use [sigh] for thoughtful pauses and [excited] for good news.","description":"Custom expressive voice guidance to use instead of the default Retell expressive prompt when enable_expressive_mode is true. If omitted or blank, the default expressive prompt will be used.","uniqueKey":"agent_override.agent.expressive_mode_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.expressive_mode_prompt","typeLabel":"string | null"},"responsiveness":{"type":"number","minimum":0,"maximum":1,"example":1,"description":"Controls how responsive is the agent. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower), while higher value means faster exchanges (respond when it can). If unset, default value 1 will apply.","uniqueKey":"agent_override.agent.responsiveness","typeLabel":"number"},"interruption_sensitivity":{"type":"number","minimum":0,"maximum":1,"example":1,"description":"Controls how sensitive the agent is to user interruptions. Value ranging from [0,1]. Lower value means it will take longer / more words for user to interrupt agent, while higher value means it's easier for user to interrupt agent. If unset, default value 1 will apply. When this is set to 0, agent would never be interrupted.","uniqueKey":"agent_override.agent.interruption_sensitivity","typeLabel":"number"},"enable_backchannel":{"type":"boolean","example":true,"description":"Controls whether the agent would backchannel (agent interjects the speaker with phrases like \"yeah\", \"uh-huh\" to signify interest and engagement). Backchannel when enabled tends to show up more in longer user utterances. If not set, agent will not backchannel.","uniqueKey":"agent_override.agent.enable_backchannel","typeLabel":"boolean"},"backchannel_frequency":{"type":"number","example":0.9,"description":"Only applicable when enable_backchannel is true. Controls how often the agent would backchannel when a backchannel is possible. Value ranging from [0,1]. Lower value means less frequent backchannel, while higher value means more frequent backchannel. If unset, default value 0.8 will apply.","uniqueKey":"agent_override.agent.backchannel_frequency","typeLabel":"number"},"backchannel_words":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.backchannel_words.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["yeah","uh-huh"],"description":"Only applicable when enable_backchannel is true. A list of words that the agent would use as backchannel. If not set, default backchannel words will apply. Check out [backchannel default words](/agent/interaction-configuration#backchannel) for more details. Note that certain voices do not work too well with certain words, so it's recommended to experiment before adding any words.","uniqueKey":"agent_override.agent.backchannel_words.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"example":["yeah","uh-huh"],"description":"Only applicable when enable_backchannel is true. A list of words that the agent would use as backchannel. If not set, default backchannel words will apply. Check out [backchannel default words](/agent/interaction-configuration#backchannel) for more details. Note that certain voices do not work too well with certain words, so it's recommended to experiment before adding any words.","uniqueKey":"agent_override.agent.backchannel_words.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.backchannel_words","typeLabel":"string[] | null"},"reminder_trigger_ms":{"type":"number","example":10000,"description":"If set (in milliseconds), will trigger a reminder to the agent to speak if the user has been silent for the specified duration after some agent speech. Must be a positive number. If unset, default value of 10000 ms (10 s) will apply.","uniqueKey":"agent_override.agent.reminder_trigger_ms","typeLabel":"number"},"reminder_max_count":{"type":"integer","example":2,"description":"If set, controls how many times agent would remind user when user is unresponsive. Must be a non negative integer. If unset, default value of 1 will apply (remind once). Set to 0 to disable agent from reminding.","uniqueKey":"agent_override.agent.reminder_max_count","typeLabel":"integer"},"ambient_sound":{"oneOf":[{"type":"string","enum":["coffee-shop","convention-hall","summer-outdoor","mountain-outdoor","static-noise","call-center",null],"description":"If set, will add ambient environment sound to the call to make experience more realistic. Currently supports the following options:\n\n- `coffee-shop`: Coffee shop ambience with people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/coffee-shop.wav)\n- `convention-hall`: Convention hall ambience, with some echo and people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/convention-hall.wav)\n- `summer-outdoor`: Summer outdoor ambience with cicada chirping. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/summer-outdoor.wav)\n- `mountain-outdoor`: Mountain outdoor ambience with birds singing. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/mountain-outdoor.wav)\n- `static-noise`: Constant static noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/static-noise.wav)\n- `call-center`: Call center work noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/call-center.wav)\nSet to `null` to remove ambient sound from this agent.\n","uniqueKey":"agent_override.agent.ambient_sound.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["coffee-shop","convention-hall","summer-outdoor","mountain-outdoor","static-noise","call-center",null],"description":"If set, will add ambient environment sound to the call to make experience more realistic. Currently supports the following options:\n\n- `coffee-shop`: Coffee shop ambience with people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/coffee-shop.wav)\n- `convention-hall`: Convention hall ambience, with some echo and people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/convention-hall.wav)\n- `summer-outdoor`: Summer outdoor ambience with cicada chirping. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/summer-outdoor.wav)\n- `mountain-outdoor`: Mountain outdoor ambience with birds singing. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/mountain-outdoor.wav)\n- `static-noise`: Constant static noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/static-noise.wav)\n- `call-center`: Call center work noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/call-center.wav)\nSet to `null` to remove ambient sound from this agent.\n","uniqueKey":"agent_override.agent.ambient_sound.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.ambient_sound","typeLabel":"enum\u003cstring> | null"},"ambient_sound_volume":{"type":"number","example":1,"description":"If set, will control the volume of the ambient sound. Value ranging from [0,2]. Lower value means quieter ambient sound, while higher value means louder ambient sound. If unset, default value 1 will apply.","uniqueKey":"agent_override.agent.ambient_sound_volume","typeLabel":"number"},"language":{"oneOf":[{"type":"string","description":"Specifies what language(s) the agent will operate in. Accepts either a single locale (e.g. `en-US`) or an array of locales for multilingual agents (e.g. `[\"en-US\",\"es-ES\"]`). If unset, defaults to `en-US`.","enum":["en-US","en-IN","en-GB","en-AU","en-NZ","de-DE","es-ES","es-419","hi-IN","fr-FR","fr-CA","ja-JP","pt-PT","pt-BR","zh-CN","ru-RU","it-IT","ko-KR","nl-NL","nl-BE","pl-PL","tr-TR","vi-VN","ro-RO","bg-BG","ca-ES","th-TH","da-DK","fi-FI","el-GR","hu-HU","id-ID","no-NO","sk-SK","sv-SE","lt-LT","lv-LV","cs-CZ","ms-MY","af-ZA","ar-SA","az-AZ","bs-BA","cy-GB","fa-IR","fil-PH","gl-ES","he-IL","hr-HR","hy-AM","is-IS","kk-KZ","kn-IN","mk-MK","mr-IN","ne-NP","sl-SI","sr-RS","sw-KE","ta-IN","ur-IN","yue-CN","uk-UA"],"example":"en-US","uniqueKey":"agent_override.agent.language.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"array","items":{"type":"string","example":"en-US","enum":["en-US","en-IN","en-GB","en-AU","en-NZ","de-DE","es-ES","es-419","hi-IN","fr-FR","fr-CA","ja-JP","pt-PT","pt-BR","zh-CN","ru-RU","it-IT","ko-KR","nl-NL","nl-BE","pl-PL","tr-TR","vi-VN","ro-RO","bg-BG","ca-ES","th-TH","da-DK","fi-FI","el-GR","hu-HU","id-ID","no-NO","sk-SK","sv-SE","lt-LT","lv-LV","cs-CZ","ms-MY","af-ZA","ar-SA","az-AZ","bs-BA","cy-GB","fa-IR","fil-PH","gl-ES","he-IL","hr-HR","hy-AM","is-IS","kk-KZ","kn-IN","mk-MK","mr-IN","ne-NP","sl-SI","sr-RS","sw-KE","ta-IN","ur-IN","yue-CN","uk-UA"],"description":"Specifies what language (and dialect) the agent will operate in. For instance, selecting `en-GB` optimizes speech recognition for British English and indexes knowledge bases with English. If unset, will use default value `en-US`.","uniqueKey":"agent_override.agent.language.oneOf.1.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Specifies what language(s) the agent will operate in. Accepts either a single locale (e.g. `en-US`) or an array of locales for multilingual agents (e.g. `[\"en-US\",\"es-ES\"]`). If unset, defaults to `en-US`.","uniqueKey":"agent_override.agent.language.oneOf.1","typeLabel":"enum\u003cstring>[]"}],"uniqueKey":"agent_override.agent.language","typeLabel":"enum\u003cstring> | enum\u003cstring>[]"},"webhook_url":{"oneOf":[{"type":"string","example":"https://webhook-url-here","description":"The webhook for agent to listen to call events. See what events it would get at [webhook doc](/features/webhook). If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to `null` to remove webhook url from this agent.","uniqueKey":"agent_override.agent.webhook_url.oneOf.0","typeLabel":"string"},{"type":"null","example":"https://webhook-url-here","description":"The webhook for agent to listen to call events. See what events it would get at [webhook doc](/features/webhook). If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to `null` to remove webhook url from this agent.","uniqueKey":"agent_override.agent.webhook_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.webhook_url","typeLabel":"string | null"},"webhook_events":{"oneOf":[{"type":"array","items":{"type":"string","enum":["call_started","call_ended","call_analyzed","transcript_updated","transfer_started","transfer_bridged","transfer_cancelled","transfer_ended"],"uniqueKey":"agent_override.agent.webhook_events.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Which webhook events this agent should receive. If not set, defaults to call_started, call_ended, call_analyzed.","uniqueKey":"agent_override.agent.webhook_events.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"type":"null","items":{"type":"string","enum":["call_started","call_ended","call_analyzed","transcript_updated","transfer_started","transfer_bridged","transfer_cancelled","transfer_ended"]},"description":"Which webhook events this agent should receive. If not set, defaults to call_started, call_ended, call_analyzed.","uniqueKey":"agent_override.agent.webhook_events.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.webhook_events","typeLabel":"enum\u003cstring>[] | null"},"webhook_timeout_ms":{"type":"integer","example":10000,"description":"The timeout for the webhook in milliseconds. If not set, default value of 10000 will apply.","uniqueKey":"agent_override.agent.webhook_timeout_ms","typeLabel":"integer"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["retell","kroger"],"description":"Provide a customized list of keywords to bias the transcriber model, so that these words are more likely to get transcribed. Commonly used for names, brands, street, etc. Entries may reference dynamic variables with `{{variable}}` syntax.","uniqueKey":"agent_override.agent.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"example":["retell","kroger"],"description":"Provide a customized list of keywords to bias the transcriber model, so that these words are more likely to get transcribed. Commonly used for names, brands, street, etc. Entries may reference dynamic variables with `{{variable}}` syntax.","uniqueKey":"agent_override.agent.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.boosted_keywords","typeLabel":"string[] | null"},"contact_memory_config":{"type":"object","additionalProperties":false,"description":"Contact memory settings for phone calls and SMS chats. Creating an agent defaults enable_update to false and enable_read to true. Updates only change the supplied flags; omitted flags stay unchanged and an empty object has no effect. Set a flag to false to disable it. The configuration cannot be cleared. Existing agents without this configuration have both disabled.","properties":{"enable_update":{"type":"boolean","description":"Rewrite the contact memory after each conversation. Cannot be enabled for payment agents. Requires storing conversation data. Chat agents must also have end_chat_after_silence_ms set.","uniqueKey":"agent_override.agent.contact_memory_config.enable_update","typeLabel":"boolean"},"enable_read":{"type":"boolean","description":"Automatically add saved contact memory to the agent prompt. Skippable nodes can use answers from the current conversation even when this setting is disabled. Contact dynamic variables, including contact_memory, remain available regardless of this setting.","uniqueKey":"agent_override.agent.contact_memory_config.enable_read","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.contact_memory_config","typeLabel":"object"},"data_storage_setting":{"type":"string","enum":["everything","everything_except_pii","basic_attributes_only"],"example":"everything","description":"Granular setting to manage how Retell stores sensitive data (transcripts, recordings, logs, etc.).\nThis replaces the deprecated `opt_out_sensitive_data_storage` field.\n- `everything`: Store all data including transcripts, recordings, and logs.\n- `everything_except_pii`: Store data without PII when PII is detected.\n- `basic_attributes_only`: Store only basic attributes; no transcripts/recordings/logs.\nIf not set, default value of \"everything\" will apply.\n","uniqueKey":"agent_override.agent.data_storage_setting","typeLabel":"enum\u003cstring>"},"data_storage_retention_days":{"oneOf":[{"type":"integer","minimum":1,"maximum":730,"example":30,"description":"Number of days to retain call/chat data before automatic deletion. Must be between 1 and 730 days. If not set, data is retained forever (no automatic deletion).","uniqueKey":"agent_override.agent.data_storage_retention_days.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":730,"example":30,"description":"Number of days to retain call/chat data before automatic deletion. Must be between 1 and 730 days. If not set, data is retained forever (no automatic deletion).","uniqueKey":"agent_override.agent.data_storage_retention_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.data_storage_retention_days","typeLabel":"integer | null"},"opt_in_signed_url":{"type":"boolean","example":true,"description":"Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.","uniqueKey":"agent_override.agent.opt_in_signed_url","typeLabel":"boolean"},"signed_url_expiration_ms":{"oneOf":[{"type":"integer","example":86400000,"description":"The expiration time for the signed url in milliseconds. Only applicable when opt_in_signed_url is true. If not set, default value of 86400000 (24 hours) will apply.","uniqueKey":"agent_override.agent.signed_url_expiration_ms.oneOf.0","typeLabel":"integer"},{"type":"null","example":86400000,"description":"The expiration time for the signed url in milliseconds. Only applicable when opt_in_signed_url is true. If not set, default value of 86400000 (24 hours) will apply.","uniqueKey":"agent_override.agent.signed_url_expiration_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.signed_url_expiration_ms","typeLabel":"integer | null"},"pronunciation_dictionary":{"oneOf":[{"type":"array","items":{"type":"object","required":["word","alphabet","phoneme"],"properties":{"word":{"type":"string","example":"actually","description":"The string of word / phrase to be annotated with pronunciation.","isRequired":true,"uniqueKey":"agent_override.agent.pronunciation_dictionary.oneOf.0.items.[INDEX].word","typeLabel":"string"},"alphabet":{"type":"string","enum":["ipa","cmu","pinyin","jyutping"],"example":"ipa","description":"The phonetic alphabet to use. MiniMax speech-02-turbo supports IPA and Pinyin. MiniMax speech-2.8-turbo also supports Jyutping. Support for other alphabets depends on the selected voice provider and model.","isRequired":true,"uniqueKey":"agent_override.agent.pronunciation_dictionary.oneOf.0.items.[INDEX].alphabet","typeLabel":"enum\u003cstring>"},"phoneme":{"type":"string","example":"ˈæktʃuəli","description":"Pronunciation of the word in the format of the selected phonetic alphabet.","isRequired":true,"uniqueKey":"agent_override.agent.pronunciation_dictionary.oneOf.0.items.[INDEX].phoneme","typeLabel":"string"}},"uniqueKey":"agent_override.agent.pronunciation_dictionary.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"A list of words / phrases and their pronunciation to be used to guide the audio synthesize for consistent pronunciation. Check the dashboard to see what provider supports this feature. Set to null to remove pronunciation dictionary from this agent.","uniqueKey":"agent_override.agent.pronunciation_dictionary.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["word","alphabet","phoneme"],"properties":{"word":{"type":"string","example":"actually","description":"The string of word / phrase to be annotated with pronunciation."},"alphabet":{"type":"string","enum":["ipa","cmu","pinyin","jyutping"],"example":"ipa","description":"The phonetic alphabet to use. MiniMax speech-02-turbo supports IPA and Pinyin. MiniMax speech-2.8-turbo also supports Jyutping. Support for other alphabets depends on the selected voice provider and model."},"phoneme":{"type":"string","example":"ˈæktʃuəli","description":"Pronunciation of the word in the format of the selected phonetic alphabet."}}},"description":"A list of words / phrases and their pronunciation to be used to guide the audio synthesize for consistent pronunciation. Check the dashboard to see what provider supports this feature. Set to null to remove pronunciation dictionary from this agent.","uniqueKey":"agent_override.agent.pronunciation_dictionary.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.pronunciation_dictionary","typeLabel":"object[] | null"},"enable_dnc_detection":{"type":"boolean","example":false,"description":"If set to true, the agent recognizes requests to stop calling or contacting the user, confirms once, and on a clear yes ends the call with disconnection reason user_requested_dnc and sets do_not_call to true on the contact for the user's phone number. If unset, default value false will apply.","uniqueKey":"agent_override.agent.enable_dnc_detection","typeLabel":"boolean"},"end_call_after_silence_ms":{"type":"integer","example":600000,"description":"If users stay silent for a period after agent speech, end the call. The minimum value allowed is 10,000 ms (10 s). By default, this is set to 600000 (10 min).","uniqueKey":"agent_override.agent.end_call_after_silence_ms","typeLabel":"integer"},"max_call_duration_ms":{"type":"integer","example":3600000,"description":"Maximum allowed length for the call, will force end the call if reached. The minimum value allowed is 60,000 ms (1 min), and maximum value allowed is 7,200,000 (2 hours). By default, this is set to 3,600,000 (1 hour).","uniqueKey":"agent_override.agent.max_call_duration_ms","typeLabel":"integer"},"voicemail_option":{"oneOf":[{"type":"object","properties":{"action":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"example":"prompt","isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","example":"Summarize the call in 2 sentences.","description":"The prompt used to generate the text to be spoken when the call is detected to be in voicemail.","isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"example":"static_text","isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","example":"Please give us a callback tomorrow at 10am.","description":"The text to be spoken when the call is detected to be in voicemail.","isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.1","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["hangup"],"example":"hangup","isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.2","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["bridge_transfer"],"example":"bridge_transfer","isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.action","typeLabel":"object"},"detection_prompt":{"oneOf":[{"type":"string","maxLength":2000,"description":"Optionally describe what should be treated as voicemail. Leave as null to use the default definition.","uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.detection_prompt.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":2000,"description":"Optionally describe what should be treated as voicemail. Leave as null to use the default definition.","uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.detection_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0.detection_prompt","typeLabel":"string | null"}},"required":["action"],"description":"If this option is set, the call will try to detect voicemail in the first 3 minutes of the call. Actions defined (hangup, or leave a message) will be applied when the voicemail is detected. Set this to null to disable voicemail detection.","example":{"action":{"type":"static_text","text":"Please give us a callback tomorrow at 10am."}},"uniqueKey":"agent_override.agent.voicemail_option.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"action":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"example":"prompt"},"text":{"type":"string","example":"Summarize the call in 2 sentences.","description":"The prompt used to generate the text to be spoken when the call is detected to be in voicemail."}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"example":"static_text"},"text":{"type":"string","example":"Please give us a callback tomorrow at 10am.","description":"The text to be spoken when the call is detected to be in voicemail."}}},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["hangup"],"example":"hangup"}}},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["bridge_transfer"],"example":"bridge_transfer"}}}]},"detection_prompt":{"oneOf":[{"type":"string","maxLength":2000,"description":"Optionally describe what should be treated as voicemail. Leave as null to use the default definition."},{"type":"null","maxLength":2000,"description":"Optionally describe what should be treated as voicemail. Leave as null to use the default definition."}]}},"required":["action"],"description":"If this option is set, the call will try to detect voicemail in the first 3 minutes of the call. Actions defined (hangup, or leave a message) will be applied when the voicemail is detected. Set this to null to disable voicemail detection.","example":{"action":{"type":"static_text","text":"Please give us a callback tomorrow at 10am."}},"uniqueKey":"agent_override.agent.voicemail_option.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.voicemail_option","typeLabel":"object | null"},"ivr_option":{"oneOf":[{"type":"object","properties":{"action":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["hangup"],"example":"hangup","isRequired":true,"uniqueKey":"agent_override.agent.ivr_option.oneOf.0.action.type","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"agent_override.agent.ivr_option.oneOf.0.action","typeLabel":"object"},"detection_prompt":{"oneOf":[{"type":"string","maxLength":2000,"description":"Optionally describe what should be treated as an IVR. Leave as null to use the default definition.","uniqueKey":"agent_override.agent.ivr_option.oneOf.0.detection_prompt.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":2000,"description":"Optionally describe what should be treated as an IVR. Leave as null to use the default definition.","uniqueKey":"agent_override.agent.ivr_option.oneOf.0.detection_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.ivr_option.oneOf.0.detection_prompt","typeLabel":"string | null"}},"required":["action"],"description":"If this option is set, the call will try to detect IVR in the first 3 minutes of the call. Actions defined will be applied when the IVR is detected. Set this to null to disable IVR detection.","example":{"action":{"type":"hangup"}},"uniqueKey":"agent_override.agent.ivr_option.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"action":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["hangup"],"example":"hangup"}}},"detection_prompt":{"oneOf":[{"type":"string","maxLength":2000,"description":"Optionally describe what should be treated as an IVR. Leave as null to use the default definition."},{"type":"null","maxLength":2000,"description":"Optionally describe what should be treated as an IVR. Leave as null to use the default definition."}]}},"required":["action"],"description":"If this option is set, the call will try to detect IVR in the first 3 minutes of the call. Actions defined will be applied when the IVR is detected. Set this to null to disable IVR detection.","example":{"action":{"type":"hangup"}},"uniqueKey":"agent_override.agent.ivr_option.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.ivr_option","typeLabel":"object | null"},"call_screening_option":{"oneOf":[{"type":"object","properties":{"agent_identity":{"type":"string","minLength":1,"maxLength":100,"example":"Acme Health scheduling team","description":"Identity the agent should provide when a call screen asks who is calling. Dynamic variables are supported.","isRequired":true,"uniqueKey":"agent_override.agent.call_screening_option.oneOf.0.agent_identity","typeLabel":"string"},"call_purpose":{"type":"string","minLength":1,"maxLength":300,"example":"confirming your appointment for tomorrow","description":"Purpose the agent should provide when a call screen asks why it is calling. Dynamic variables are supported.","isRequired":true,"uniqueKey":"agent_override.agent.call_screening_option.oneOf.0.call_purpose","typeLabel":"string"}},"required":["agent_identity","call_purpose"],"additionalProperties":false,"description":"If this option is set, the agent prompt will include call screen handling instructions for identity and call purpose questions. Set this to null to disable call screen prompt instructions.","uniqueKey":"agent_override.agent.call_screening_option.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"agent_identity":{"type":"string","minLength":1,"maxLength":100,"example":"Acme Health scheduling team","description":"Identity the agent should provide when a call screen asks who is calling. Dynamic variables are supported."},"call_purpose":{"type":"string","minLength":1,"maxLength":300,"example":"confirming your appointment for tomorrow","description":"Purpose the agent should provide when a call screen asks why it is calling. Dynamic variables are supported."}},"required":["agent_identity","call_purpose"],"additionalProperties":false,"description":"If this option is set, the agent prompt will include call screen handling instructions for identity and call purpose questions. Set this to null to disable call screen prompt instructions.","uniqueKey":"agent_override.agent.call_screening_option.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.call_screening_option","typeLabel":"object | null"},"post_call_analysis_data":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["string"],"description":"Type of the variable to extract.","example":"string","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"customer_name","minLength":1,"isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"The name of the customer.","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.examples.items.[INDEX]","typeLabel":"string"},"description":"Examples of the variable value to teach model the style and syntax.","example":["John Doe","Jane Smith"],"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.examples","typeLabel":"string[]"},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.required","typeLabel":"boolean"},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0.conditional_prompt","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description","choices"],"properties":{"type":{"type":"string","enum":["enum"],"description":"Type of the variable to extract.","example":"enum","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"product_rating","minLength":1,"isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Rating of the product.","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"choices":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.choices.items.[INDEX]","typeLabel":"string"},"description":"The possible values of the variable, must be non empty array.","example":["good"],"isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.choices","typeLabel":"string[]"},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.required","typeLabel":"boolean"},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1.conditional_prompt","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Type of the variable to extract.","example":"boolean","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"is_converted","minLength":1,"isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Whether the customer converted.","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.2.required","typeLabel":"boolean"},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.2.conditional_prompt","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["number"],"description":"Type of the variable to extract.","example":"number","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"order_count","minLength":1,"isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.3.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"How many the customer intend to order.","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.3.description","typeLabel":"string"},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.3.required","typeLabel":"boolean"},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.3.conditional_prompt","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name"],"properties":{"type":{"type":"string","enum":["system-presets"],"description":"Identifies this item as a system preset.","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","enum":["call_summary","call_successful","user_sentiment"],"description":"Preset identifier for voice agent analysis.","example":"call_summary","isRequired":true,"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.4.name","typeLabel":"enum\u003cstring>"},"description":{"type":"string","minLength":1,"description":"Prompt or description for this preset.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.4.description","typeLabel":"string"},"required":{"type":"boolean","description":"If false, this field is optional in the analysis. If true or unset, the field is required.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.4.required","typeLabel":"boolean"},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated. If not set, the field is always included.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.4.conditional_prompt","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX].oneOf.4","typeLabel":"object"}],"uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Post call analysis data to extract from the call. This data will augment the pre-defined variables extracted in the call analysis. This will be available after the call ends.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["string"],"description":"Type of the variable to extract.","example":"string"},"name":{"type":"string","description":"Name of the variable.","example":"customer_name","minLength":1},"description":{"type":"string","description":"Description of the variable.","example":"The name of the customer."},"examples":{"type":"array","items":{"type":"string"},"description":"Examples of the variable value to teach model the style and syntax.","example":["John Doe","Jane Smith"]},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful."},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored."}}},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description","choices"],"properties":{"type":{"type":"string","enum":["enum"],"description":"Type of the variable to extract.","example":"enum"},"name":{"type":"string","description":"Name of the variable.","example":"product_rating","minLength":1},"description":{"type":"string","description":"Description of the variable.","example":"Rating of the product."},"choices":{"type":"array","items":{"type":"string"},"description":"The possible values of the variable, must be non empty array.","example":["good"]},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful."},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored."}}},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Type of the variable to extract.","example":"boolean"},"name":{"type":"string","description":"Name of the variable.","example":"is_converted","minLength":1},"description":{"type":"string","description":"Description of the variable.","example":"Whether the customer converted."},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful."},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored."}}},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["number"],"description":"Type of the variable to extract.","example":"number"},"name":{"type":"string","description":"Name of the variable.","example":"order_count","minLength":1},"description":{"type":"string","description":"Description of the variable.","example":"How many the customer intend to order."},"required":{"type":"boolean","description":"Whether this data is required. If true and the data is not extracted, the call will be marked as unsuccessful."},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated in the analysis. If not set, the field is always included. If required is true, this is ignored."}}},{"type":"object","description":"Post-call analysis item (custom data or voice preset). Use for voice agent post_call_analysis_data; validates only call presets (call_summary, call_successful, user_sentiment).","required":["type","name"],"properties":{"type":{"type":"string","enum":["system-presets"],"description":"Identifies this item as a system preset."},"name":{"type":"string","enum":["call_summary","call_successful","user_sentiment"],"description":"Preset identifier for voice agent analysis.","example":"call_summary"},"description":{"type":"string","minLength":1,"description":"Prompt or description for this preset."},"required":{"type":"boolean","description":"If false, this field is optional in the analysis. If true or unset, the field is required."},"conditional_prompt":{"type":"string","description":"Optional instruction to help decide whether this field needs to be populated. If not set, the field is always included."}}}]},"description":"Post call analysis data to extract from the call. This data will augment the pre-defined variables extracted in the call analysis. This will be available after the call ends.","uniqueKey":"agent_override.agent.post_call_analysis_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.post_call_analysis_data","typeLabel":"object[] | null"},"post_call_analysis_model":{"oneOf":[{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon",null],"description":"The model to use for post call analysis. Default to gpt-5.6-terra.","example":"gpt-4.1-mini","uniqueKey":"agent_override.agent.post_call_analysis_model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon",null],"description":"The model to use for post call analysis. Default to gpt-5.6-terra.","example":"gpt-4.1-mini","uniqueKey":"agent_override.agent.post_call_analysis_model.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.post_call_analysis_model","typeLabel":"enum\u003cstring> | null"},"begin_message_delay_ms":{"type":"integer","example":1000,"description":"If set, will delay the first message by the specified amount of milliseconds, so that it gives user more time to prepare to take the call. Valid range is [0, 5000]. If not set or set to 0, agent will speak immediately. Only applicable when agent speaks first.","uniqueKey":"agent_override.agent.begin_message_delay_ms","typeLabel":"integer"},"ring_duration_ms":{"type":"integer","minimum":5000,"maximum":300000,"example":30000,"description":"If set, the phone ringing will last for the specified amount of milliseconds. This applies for both outbound call ringtime, and call transfer ringtime. Default to 30000 (30 s). Valid range is [5000, 300000].","uniqueKey":"agent_override.agent.ring_duration_ms","typeLabel":"integer"},"stt_mode":{"type":"string","enum":["fast","accurate","custom"],"example":"fast","description":"If set, determines whether speech to text should focus on latency or accuracy. Default to fast mode. When set to custom, custom_stt_config must be provided.","uniqueKey":"agent_override.agent.stt_mode","typeLabel":"enum\u003cstring>"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom STT configuration. Only used when stt_mode is set to custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"agent_override.agent.custom_stt_config.oneOf.0.provider","typeLabel":"enum\u003cstring>"},"endpointing_ms":{"type":"integer","description":"Endpointing timeout in milliseconds. Minimum is 100 for Azure, 10 for Deepgram, 500 for Soniox, 100 for AssemblyAI, 100 for Muse. For AssemblyAI, this sets min_turn_silence (100-3000 ms). max_turn_silence adds half of this value, rounded to the nearest millisecond and bounded to 500-1000 ms, with a total cap of 3000 ms. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"agent_override.agent.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"agent_override.agent.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom STT configuration. Only used when stt_mode is set to custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"]},"endpointing_ms":{"type":"integer","description":"Endpointing timeout in milliseconds. Minimum is 100 for Azure, 10 for Deepgram, 500 for Soniox, 100 for AssemblyAI, 100 for Muse. For AssemblyAI, this sets min_turn_silence (100-3000 ms). max_turn_silence adds half of this value, rounded to the nearest millisecond and bounded to 500-1000 ms, with a total cap of 3000 ms. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"agent_override.agent.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.custom_stt_config","typeLabel":"object | null"},"vocab_specialization":{"type":"string","enum":["general","medical"],"example":"general","description":"If set, determines the vocabulary set to use for transcription. This setting only applies for English agents, for non English agent, this setting is a no-op. Default to general.","uniqueKey":"agent_override.agent.vocab_specialization","typeLabel":"enum\u003cstring>"},"allow_user_dtmf":{"type":"boolean","example":true,"description":"If set to true, DTMF input will be accepted and processed. If false, any DTMF input will be ignored. Default to true.","uniqueKey":"agent_override.agent.allow_user_dtmf","typeLabel":"boolean"},"allow_dtmf_interruption":{"type":"boolean","example":false,"description":"If set to true, DTMF input will interrupt the agent even when interruption_sensitivity is 0. Can be overridden per conversation or subagent node. Default to false.","uniqueKey":"agent_override.agent.allow_dtmf_interruption","typeLabel":"boolean"},"user_dtmf_options":{"oneOf":[{"type":"object","properties":{"digit_limit":{"oneOf":[{"type":"number","description":"The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.","minimum":1,"maximum":50,"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.digit_limit.oneOf.0","typeLabel":"number"},{"type":"null","description":"The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.","minimum":1,"maximum":50,"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.digit_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.digit_limit","typeLabel":"number | null"},"termination_key":{"oneOf":[{"type":"string","description":"A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).","example":"#","uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.termination_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).","example":"#","uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.termination_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.termination_key","typeLabel":"string | null"},"timeout_ms":{"type":"integer","description":"The time (in milliseconds) to wait for user DTMF input before timing out. The timer resets with each digit received.","minimum":1000,"maximum":15000,"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0.timeout_ms","typeLabel":"integer"}},"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"digit_limit":{"oneOf":[{"type":"number","description":"The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.","minimum":1,"maximum":50},{"type":"null","description":"The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.","minimum":1,"maximum":50}]},"termination_key":{"oneOf":[{"type":"string","description":"A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).","example":"#"},{"type":"null","description":"A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).","example":"#"}]},"timeout_ms":{"type":"integer","description":"The time (in milliseconds) to wait for user DTMF input before timing out. The timer resets with each digit received.","minimum":1000,"maximum":15000}},"uniqueKey":"agent_override.agent.user_dtmf_options.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.user_dtmf_options","typeLabel":"object | null"},"denoising_mode":{"type":"string","enum":["no-denoise","noise-cancellation","noise-and-background-speech-cancellation"],"example":"noise-cancellation","description":"If set, determines what denoising mode to use. Use \"no-denoise\" to bypass all audio denoising. Default to noise-cancellation.","uniqueKey":"agent_override.agent.denoising_mode","typeLabel":"enum\u003cstring>"},"denoising_enhancement_level":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"example":0.8,"description":"Controls the enhancement level for background voice cancellation. Set to 0 to bypass background voice cancellation without BVC charges. Value ranging from [0,1]. Only applicable when denoising_mode is noise-and-background-speech-cancellation. Defaults to 0.8 if no value is configured. Set to null to clear the configured value. Omitting this field preserves the existing value.","uniqueKey":"agent_override.agent.denoising_enhancement_level.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"example":0.8,"description":"Controls the enhancement level for background voice cancellation. Set to 0 to bypass background voice cancellation without BVC charges. Value ranging from [0,1]. Only applicable when denoising_mode is noise-and-background-speech-cancellation. Defaults to 0.8 if no value is configured. Set to null to clear the configured value. Omitting this field preserves the existing value.","uniqueKey":"agent_override.agent.denoising_enhancement_level.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.denoising_enhancement_level","typeLabel":"number | null"},"pii_config":{"type":"object","required":["mode","categories"],"properties":{"mode":{"type":"string","enum":["post_call"],"default":"post_call","description":"The processing mode for PII scrubbing. Currently only post-call is supported.","isRequired":true,"uniqueKey":"agent_override.agent.pii_config.mode","typeLabel":"enum\u003cstring>"},"categories":{"type":"array","items":{"type":"string","enum":["person_name","address","email","phone_number","ssn","passport","driver_license","credit_card","bank_account","password","pin","medical_id","date_of_birth","customer_account_number"],"uniqueKey":"agent_override.agent.pii_config.categories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueItems":true,"default":[],"description":"List of PII categories to scrub from transcripts and recordings. PII redaction is only active when this list is non-empty; an empty array means no PII scrubbing is performed.","isRequired":true,"uniqueKey":"agent_override.agent.pii_config.categories","typeLabel":"enum\u003cstring>[]"}},"description":"Configuration for PII scrubbing from transcripts and recordings.","uniqueKey":"agent_override.agent.pii_config","typeLabel":"object"},"guardrail_config":{"type":"object","properties":{"output_topics":{"oneOf":[{"type":"array","items":{"type":"string","enum":["harassment","self_harm","sexual_exploitation","violence","defense_and_national_security","illicit_and_harmful_activity","gambling","regulated_professional_advice","child_safety_and_exploitation"],"uniqueKey":"agent_override.agent.guardrail_config.output_topics.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueItems":true,"description":"Selected prohibited agent topic categories to check. When agent messages contain these topics, they will be replaced with a placeholder message.","uniqueKey":"agent_override.agent.guardrail_config.output_topics.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"type":"null","items":{"type":"string","enum":["harassment","self_harm","sexual_exploitation","violence","defense_and_national_security","illicit_and_harmful_activity","gambling","regulated_professional_advice","child_safety_and_exploitation"]},"uniqueItems":true,"description":"Selected prohibited agent topic categories to check. When agent messages contain these topics, they will be replaced with a placeholder message.","uniqueKey":"agent_override.agent.guardrail_config.output_topics.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.guardrail_config.output_topics","typeLabel":"enum\u003cstring>[] | null"},"input_topics":{"oneOf":[{"type":"array","items":{"type":"string","enum":["platform_integrity_jailbreaking"],"uniqueKey":"agent_override.agent.guardrail_config.input_topics.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueItems":true,"description":"Selected prohibited user topic categories to check. When user messages contain these topics, the agent will respond with a placeholder message instead of processing the request.","uniqueKey":"agent_override.agent.guardrail_config.input_topics.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"type":"null","items":{"type":"string","enum":["platform_integrity_jailbreaking"]},"uniqueItems":true,"description":"Selected prohibited user topic categories to check. When user messages contain these topics, the agent will respond with a placeholder message instead of processing the request.","uniqueKey":"agent_override.agent.guardrail_config.input_topics.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.guardrail_config.input_topics","typeLabel":"enum\u003cstring>[] | null"}},"description":"Configuration for guardrail checks to detect and prevent prohibited topics in agent output and user input.","uniqueKey":"agent_override.agent.guardrail_config","typeLabel":"object"},"handbook_config":{"type":"object","description":"Toggle behavior presets on/off to influence agent response style and behaviors.","properties":{"default_personality":{"type":"boolean","description":"Professional call center rep baseline.","uniqueKey":"agent_override.agent.handbook_config.default_personality","typeLabel":"boolean"},"conversational_personality":{"type":"boolean","description":"Enables Conversational Personality. When true, the agent uses the Conversational Personality handbook preset, skips Professional Rep Personality during prompt assembly, and enables internal colloquial rewrite behavior.","uniqueKey":"agent_override.agent.handbook_config.conversational_personality","typeLabel":"boolean"},"natural_filler_words":{"type":"boolean","description":"Sprinkle natural speech fillers like \"um\", \"you know\" for a more human, conversational tone.","uniqueKey":"agent_override.agent.handbook_config.natural_filler_words","typeLabel":"boolean"},"high_empathy":{"type":"boolean","description":"Warm acknowledgment of caller concerns.","uniqueKey":"agent_override.agent.handbook_config.high_empathy","typeLabel":"boolean"},"echo_verification":{"type":"boolean","description":"Repeat back and confirm important details (voice only).","uniqueKey":"agent_override.agent.handbook_config.echo_verification","typeLabel":"boolean"},"nato_phonetic_alphabet":{"type":"boolean","description":"Spell using NATO phonetic alphabet style (voice only).","uniqueKey":"agent_override.agent.handbook_config.nato_phonetic_alphabet","typeLabel":"boolean"},"speech_normalization":{"type":"boolean","description":"Convert numbers/dates/currency to spoken forms (voice only).","uniqueKey":"agent_override.agent.handbook_config.speech_normalization","typeLabel":"boolean"},"smart_matching":{"type":"boolean","description":"Treat near-match similar words as same entity to reduce impact of transcription error (voice only).","uniqueKey":"agent_override.agent.handbook_config.smart_matching","typeLabel":"boolean"},"ai_disclosure":{"type":"boolean","description":"When asked, acknowledge being a virtual assistant.","uniqueKey":"agent_override.agent.handbook_config.ai_disclosure","typeLabel":"boolean"},"scope_boundaries":{"type":"boolean","description":"Stay within prompt/context scope, don't invent details.","uniqueKey":"agent_override.agent.handbook_config.scope_boundaries","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.handbook_config","typeLabel":"object"},"timezone":{"oneOf":[{"type":"string","description":"IANA timezone for the agent (e.g. America/New_York). Defaults to America/Los_Angeles if not set.","example":"America/New_York","uniqueKey":"agent_override.agent.timezone.oneOf.0","typeLabel":"string"},{"type":"null","description":"IANA timezone for the agent (e.g. America/New_York). Defaults to America/Los_Angeles if not set.","example":"America/New_York","uniqueKey":"agent_override.agent.timezone.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.timezone","typeLabel":"string | null"},"pre_session_tools":{"oneOf":[{"type":"array","maxItems":15,"items":{"oneOf":[{"type":"object","description":"A pre-session tool (app / custom / code, discriminated by type) plus its dependency edges. The tool's name is the depends_on handle and must be unique across the agent's session tools. Parameters may set a constant value or a description for the LLM to infer the value. Pre-session inference uses the agent prompt and dynamic variables.","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the tool. Must be unique within the phase's tools; referenced by depends_on. Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"app_id":{"type":"string","description":"The connection (App) this tool runs against. Must be a connection in the organization whose provider matches this tool's provider.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.app_id","typeLabel":"string"},"provider":{"type":"string","description":"Provider of the connection. Must match the connection's provider; supported providers are listed by list-app-templates.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.provider","typeLabel":"string"},"app_tool_template_name":{"type":"string","description":"Name of the catalog template within the provider, as listed by list-app-templates.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.app_tool_template_name","typeLabel":"string"},"parameters":{"type":"array","maxItems":5,"items":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].required.items.[INDEX]","typeLabel":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].required","typeLabel":"string[]"},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX]","typeLabel":"object"},"description":"The resolved input parameters, in order. Properties may pin a value with const (including {{variable}} references) or provide a description for LLM inference. Each property may also record selected_input_mode, the editor mode the user selected (\"const_enum\", \"const_boolean\", \"const_value\", \"description_custom\", or \"description_preset\"); it is stored and returned as-is, used only by the tool config UI. Omit the key when no mode is recorded; when set, const_* modes require a non-empty const, and description_* modes must omit const entirely. Each parameter's required list must match the schema returned by the corresponding step of the get-app-tool-schema loop.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters","typeLabel":"object[]"},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.response_variables.additionalProperties","typeLabel":"string"},"example":{"contact_first_name":"data.first_name"},"description":"Mapping of a dynamic-variable name to the response field (dot-path) it is populated from. Missing paths are ignored.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.response_variables","typeLabel":"object"},"output_selection":{"oneOf":[{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode"],"properties":{"mode":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0.fields.items.[INDEX]","typeLabel":"string"},"description":"Not used at runtime; stored and returned as-is for the UI.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0.fields","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0","typeLabel":"object"},{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode","fields"],"properties":{"mode":{"type":"string","enum":["subset"],"isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1.fields.items.[INDEX]","typeLabel":"string"},"example":["id","properties.email"],"description":"The only response fields the agent and the transcript see, as dot-paths into the response schema returned by get-app-tool-schema. Everything else is dropped. Selecting a parent keeps its whole subtree. A plain segment traverses arrays element-wise (deals.properties.amount keeps that field on every deal), while key[n] selects one element (deals[0].id keeps only the first deal's id); paths that match nothing contribute nothing.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1.fields","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1","typeLabel":"object"}],"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection","typeLabel":"object"},"description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. Overrides the catalog template's LLM-facing description.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, will speak during execution.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.speak_during_execution","typeLabel":"boolean"},"speak_after_execution":{"type":"boolean","default":true,"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Determines whether the agent would call LLM another time and speak when the result of the tool is obtained.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.speak_after_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. The message for the agent to speak when executing the tool. Only applicable when speak_during_execution is true.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_type","typeLabel":"enum\u003cstring>"},"enable_typing_sound":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.enable_typing_sound","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0.depends_on","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"A pre-session tool (app / custom / code, discriminated by type) plus its dependency edges. The tool's name is the depends_on handle and must be unique across the agent's session tools. Parameters may set a constant value or a description for the LLM to infer the value. Pre-session inference uses the agent prompt and dynamic variables.","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"url":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.url","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.query_params","typeLabel":"object"},"parameters":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.required.items.[INDEX]","typeLabel":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.required","typeLabel":"string[]"},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters","typeLabel":"object"},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.response_variables.additionalProperties","typeLabel":"string"},"example":{"user_name":"data.user.name"},"description":"A mapping of variable names to JSON paths in the response body. These values will be extracted from the response and made available as dynamic variables for use.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the function. Recommend to turn on if your function call takes over 1s (including network) to complete, so that your agent remains responsive.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.speak_during_execution","typeLabel":"boolean"},"speak_after_execution":{"type":"boolean","description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained. Usually this needs to get turned on so user can get update for the function call.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.speak_after_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true. Can write what to say or even provide examples. The default is \"The message you will say to callee when calling this tool. Make sure it fits into the conversation smoothly.\".","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_type","typeLabel":"enum\u003cstring>"},"timeout_ms":{"type":"integer","minimum":1000,"maximum":600000,"description":"The maximum time in milliseconds the tool can run before it's considered timeout. If the tool times out, the agent would have that info. The minimum value allowed is 1000 ms (1 s), and maximum value allowed is 600,000 ms (10 min). By default, this is set to 120,000 ms (2 min).","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.timeout_ms","typeLabel":"integer"},"max_retry":{"type":"integer","minimum":0,"maximum":5,"description":"Maximum number of times to retry the request after a failed attempt, from 0 (no retry) to 5. Retries happen on any failure, with exponential backoff between attempts; the backoff delay is not configurable. `timeout_ms` applies per attempt rather than as a budget across all attempts, so an attempt that times out is still retried and the worst-case total duration is `timeout_ms` multiplied by (`max_retry` + 1) as well as any latency incurred by the exponential backoff + jitter between each retry. Only the final attempt's result is reported to the agent. Because retries repeat the request, only set this above 0 if your endpoint is idempotent — a retried request may be processed more than once. Defaults to 0 (no retry).","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.max_retry","typeLabel":"integer"},"args_at_root":{"type":"boolean","description":"If set to true, the parameters will be passed as root level JSON object instead of nested under \"args\".","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.args_at_root","typeLabel":"boolean"},"parameter_type":{"type":"string","enum":["json","form"],"description":"How the tool's `parameters` are authored and shown in the dashboard editor — \"form\" for the visual parameter builder, \"json\" for a raw JSON Schema. Both produce the same `parameters` schema; this does not change how the request body is encoded (see `args_at_root`).","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameter_type","typeLabel":"enum\u003cstring>"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.enable_typing_sound","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1.depends_on","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"A pre-session tool (app / custom / code, discriminated by type) plus its dependency edges. The tool's name is the depends_on handle and must be unique across the agent's session tools. Parameters may set a constant value or a description for the LLM to infer the value. Pre-session inference uses the agent prompt and dynamic variables.","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"],"isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.code","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"timeout_ms":{"type":"integer","minimum":5000,"maximum":60000,"description":"The maximum time in milliseconds the code can run before it's considered timeout. Defaults to 30,000 ms (30 s).","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.timeout_ms","typeLabel":"integer"},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.response_variables.additionalProperties","typeLabel":"string"},"example":{"order_id":"data.order.id"},"description":"A mapping of variable names to JSON paths in the code execution result. These mapped values will be extracted and added as dynamic variables.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the tool.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"speak_after_execution":{"type":"boolean","default":true,"description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.speak_after_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_type","typeLabel":"enum\u003cstring>"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.enable_typing_sound","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2.depends_on","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Integration (Agent Functions) tools run as a dependency graph during session setup, before the agent's first message. Outputs are injected as dynamic variables. On calls the graph gets one minute unless an outbound caller will be dialed after setup, in which case it gets five minutes. Past that session initialization continues and any remaining tools finish in the background, so their outputs no longer reach the agent's prompt. Set to null to clear.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":15,"items":{"oneOf":[{"type":"object","description":"A pre-session tool (app / custom / code, discriminated by type) plus its dependency edges. The tool's name is the depends_on handle and must be unique across the agent's session tools. Parameters may set a constant value or a description for the LLM to infer the value. Pre-session inference uses the agent prompt and dynamic variables.","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"]},"name":{"type":"string","description":"Name of the tool. Must be unique within the phase's tools; referenced by depends_on. Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"app_id":{"type":"string","description":"The connection (App) this tool runs against. Must be a connection in the organization whose provider matches this tool's provider."},"provider":{"type":"string","description":"Provider of the connection. Must match the connection's provider; supported providers are listed by list-app-templates."},"app_tool_template_name":{"type":"string","description":"Name of the catalog template within the provider, as listed by list-app-templates."},"parameters":{"type":"array","maxItems":5,"items":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object."},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property."},"required":{"type":"array","items":{"type":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties."},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added."}}},"description":"The resolved input parameters, in order. Properties may pin a value with const (including {{variable}} references) or provide a description for LLM inference. Each property may also record selected_input_mode, the editor mode the user selected (\"const_enum\", \"const_boolean\", \"const_value\", \"description_custom\", or \"description_preset\"); it is stored and returned as-is, used only by the tool config UI. Omit the key when no mode is recorded; when set, const_* modes require a non-empty const, and description_* modes must omit const entirely. Each parameter's required list must match the schema returned by the corresponding step of the get-app-tool-schema loop."},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged."},"response_variables":{"type":"object","additionalProperties":{"type":"string"},"example":{"contact_first_name":"data.first_name"},"description":"Mapping of a dynamic-variable name to the response field (dot-path) it is populated from. Missing paths are ignored."},"output_selection":{"oneOf":[{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode"],"properties":{"mode":{"type":"string","enum":["all"]},"fields":{"type":"array","items":{"type":"string"},"description":"Not used at runtime; stored and returned as-is for the UI."}}},{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode","fields"],"properties":{"mode":{"type":"string","enum":["subset"]},"fields":{"type":"array","items":{"type":"string"},"example":["id","properties.email"],"description":"The only response fields the agent and the transcript see, as dot-paths into the response schema returned by get-app-tool-schema. Everything else is dropped. Selecting a parent keeps its whole subtree. A plain segment traverses arrays element-wise (deals.properties.amount keeps that field on every deal), while key[n] selects one element (deals[0].id keeps only the first deal's id); paths that match nothing contribute nothing."}}}]},"description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. Overrides the catalog template's LLM-facing description."},"speak_during_execution":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, will speak during execution."},"speak_after_execution":{"type":"boolean","default":true,"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Determines whether the agent would call LLM another time and speak when the result of the tool is obtained."},"execution_message_description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. The message for the agent to speak when executing the tool. Only applicable when speak_during_execution is true."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"enable_typing_sound":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."}}},{"type":"object","description":"A pre-session tool (app / custom / code, discriminated by type) plus its dependency edges. The tool's name is the depends_on handle and must be unique across the agent's session tools. Parameters may set a constant value or a description for the LLM to infer the value. Pre-session inference uses the agent prompt and dynamic variables.","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"]},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"url":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"description":{"type":"string","description":"Describes what this tool does and when to call this tool."},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL."},"parameters":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object."},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property."},"required":{"type":"array","items":{"type":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties."},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added."}}},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged."},"response_variables":{"type":"object","additionalProperties":{"type":"string"},"example":{"user_name":"data.user.name"},"description":"A mapping of variable names to JSON paths in the response body. These values will be extracted from the response and made available as dynamic variables for use."},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the function. Recommend to turn on if your function call takes over 1s (including network) to complete, so that your agent remains responsive."},"speak_after_execution":{"type":"boolean","description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained. Usually this needs to get turned on so user can get update for the function call."},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true. Can write what to say or even provide examples. The default is \"The message you will say to callee when calling this tool. Make sure it fits into the conversation smoothly.\"."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"timeout_ms":{"type":"integer","minimum":1000,"maximum":600000,"description":"The maximum time in milliseconds the tool can run before it's considered timeout. If the tool times out, the agent would have that info. The minimum value allowed is 1000 ms (1 s), and maximum value allowed is 600,000 ms (10 min). By default, this is set to 120,000 ms (2 min)."},"max_retry":{"type":"integer","minimum":0,"maximum":5,"description":"Maximum number of times to retry the request after a failed attempt, from 0 (no retry) to 5. Retries happen on any failure, with exponential backoff between attempts; the backoff delay is not configurable. `timeout_ms` applies per attempt rather than as a budget across all attempts, so an attempt that times out is still retried and the worst-case total duration is `timeout_ms` multiplied by (`max_retry` + 1) as well as any latency incurred by the exponential backoff + jitter between each retry. Only the final attempt's result is reported to the agent. Because retries repeat the request, only set this above 0 if your endpoint is idempotent — a retried request may be processed more than once. Defaults to 0 (no retry)."},"args_at_root":{"type":"boolean","description":"If set to true, the parameters will be passed as root level JSON object instead of nested under \"args\"."},"parameter_type":{"type":"string","enum":["json","form"],"description":"How the tool's `parameters` are authored and shown in the dashboard editor — \"form\" for the visual parameter builder, \"json\" for a raw JSON Schema. Both produce the same `parameters` schema; this does not change how the request body is encoded (see `args_at_root`)."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."}}},{"type":"object","description":"A pre-session tool (app / custom / code, discriminated by type) plus its dependency edges. The tool's name is the depends_on handle and must be unique across the agent's session tools. Parameters may set a constant value or a description for the LLM to infer the value. Pre-session inference uses the agent prompt and dynamic variables.","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"]},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"description":{"type":"string","description":"Describes what this tool does and when to call this tool."},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox."},"timeout_ms":{"type":"integer","minimum":5000,"maximum":60000,"description":"The maximum time in milliseconds the code can run before it's considered timeout. Defaults to 30,000 ms (30 s)."},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged."},"response_variables":{"type":"object","additionalProperties":{"type":"string"},"example":{"order_id":"data.order.id"},"description":"A mapping of variable names to JSON paths in the code execution result. These mapped values will be extracted and added as dynamic variables."},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the tool."},"speak_after_execution":{"type":"boolean","default":true,"description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained."},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."}}}]},"description":"Integration (Agent Functions) tools run as a dependency graph during session setup, before the agent's first message. Outputs are injected as dynamic variables. On calls the graph gets one minute unless an outbound caller will be dialed after setup, in which case it gets five minutes. Past that session initialization continues and any remaining tools finish in the background, so their outputs no longer reach the agent's prompt. Set to null to clear.","uniqueKey":"agent_override.agent.pre_session_tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.pre_session_tools","typeLabel":"object[] | null"},"post_session_tools":{"oneOf":[{"type":"array","maxItems":15,"items":{"oneOf":[{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the tool. Must be unique within the phase's tools; referenced by depends_on. Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"app_id":{"type":"string","description":"The connection (App) this tool runs against. Must be a connection in the organization whose provider matches this tool's provider.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.app_id","typeLabel":"string"},"provider":{"type":"string","description":"Provider of the connection. Must match the connection's provider; supported providers are listed by list-app-templates.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.provider","typeLabel":"string"},"app_tool_template_name":{"type":"string","description":"Name of the catalog template within the provider, as listed by list-app-templates.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.app_tool_template_name","typeLabel":"string"},"parameters":{"type":"array","maxItems":5,"items":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].required.items.[INDEX]","typeLabel":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].required","typeLabel":"string[]"},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters.items.[INDEX]","typeLabel":"object"},"description":"The resolved input parameters, in order. Properties may pin a value with const (including {{variable}} references) or provide a description for LLM inference. Each property may also record selected_input_mode, the editor mode the user selected (\"const_enum\", \"const_boolean\", \"const_value\", \"description_custom\", or \"description_preset\"); it is stored and returned as-is, used only by the tool config UI. Omit the key when no mode is recorded; when set, const_* modes require a non-empty const, and description_* modes must omit const entirely. Each parameter's required list must match the schema returned by the corresponding step of the get-app-tool-schema loop.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.parameters","typeLabel":"object[]"},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.response_variables.additionalProperties","typeLabel":"string"},"example":{"contact_first_name":"data.first_name"},"description":"Mapping of a dynamic-variable name to the response field (dot-path) it is populated from. Missing paths are ignored.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.response_variables","typeLabel":"object"},"output_selection":{"oneOf":[{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode"],"properties":{"mode":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0.fields.items.[INDEX]","typeLabel":"string"},"description":"Not used at runtime; stored and returned as-is for the UI.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0.fields","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.0","typeLabel":"object"},{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode","fields"],"properties":{"mode":{"type":"string","enum":["subset"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1.fields.items.[INDEX]","typeLabel":"string"},"example":["id","properties.email"],"description":"The only response fields the agent and the transcript see, as dot-paths into the response schema returned by get-app-tool-schema. Everything else is dropped. Selecting a parent keeps its whole subtree. A plain segment traverses arrays element-wise (deals.properties.amount keeps that field on every deal), while key[n] selects one element (deals[0].id keeps only the first deal's id); paths that match nothing contribute nothing.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1.fields","typeLabel":"string[]"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection.oneOf.1","typeLabel":"object"}],"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.output_selection","typeLabel":"object"},"description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. Overrides the catalog template's LLM-facing description.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, will speak during execution.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.speak_during_execution","typeLabel":"boolean"},"speak_after_execution":{"type":"boolean","default":true,"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Determines whether the agent would call LLM another time and speak when the result of the tool is obtained.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.speak_after_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. The message for the agent to speak when executing the tool. Only applicable when speak_during_execution is true.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_type","typeLabel":"enum\u003cstring>"},"enable_typing_sound":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.enable_typing_sound","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.depends_on","typeLabel":"string[]"},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.type","typeLabel":"enum\u003cstring>"},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.equations.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0.condition","typeLabel":"object"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"url":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.url","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.query_params","typeLabel":"object"},"parameters":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.required.items.[INDEX]","typeLabel":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.required","typeLabel":"string[]"},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameters","typeLabel":"object"},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.response_variables.additionalProperties","typeLabel":"string"},"example":{"user_name":"data.user.name"},"description":"A mapping of variable names to JSON paths in the response body. These values will be extracted from the response and made available as dynamic variables for use.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the function. Recommend to turn on if your function call takes over 1s (including network) to complete, so that your agent remains responsive.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.speak_during_execution","typeLabel":"boolean"},"speak_after_execution":{"type":"boolean","description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained. Usually this needs to get turned on so user can get update for the function call.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.speak_after_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true. Can write what to say or even provide examples. The default is \"The message you will say to callee when calling this tool. Make sure it fits into the conversation smoothly.\".","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_type","typeLabel":"enum\u003cstring>"},"timeout_ms":{"type":"integer","minimum":1000,"maximum":600000,"description":"The maximum time in milliseconds the tool can run before it's considered timeout. If the tool times out, the agent would have that info. The minimum value allowed is 1000 ms (1 s), and maximum value allowed is 600,000 ms (10 min). By default, this is set to 120,000 ms (2 min).","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.timeout_ms","typeLabel":"integer"},"max_retry":{"type":"integer","minimum":0,"maximum":5,"description":"Maximum number of times to retry the request after a failed attempt, from 0 (no retry) to 5. Retries happen on any failure, with exponential backoff between attempts; the backoff delay is not configurable. `timeout_ms` applies per attempt rather than as a budget across all attempts, so an attempt that times out is still retried and the worst-case total duration is `timeout_ms` multiplied by (`max_retry` + 1) as well as any latency incurred by the exponential backoff + jitter between each retry. Only the final attempt's result is reported to the agent. Because retries repeat the request, only set this above 0 if your endpoint is idempotent — a retried request may be processed more than once. Defaults to 0 (no retry).","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.max_retry","typeLabel":"integer"},"args_at_root":{"type":"boolean","description":"If set to true, the parameters will be passed as root level JSON object instead of nested under \"args\".","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.args_at_root","typeLabel":"boolean"},"parameter_type":{"type":"string","enum":["json","form"],"description":"How the tool's `parameters` are authored and shown in the dashboard editor — \"form\" for the visual parameter builder, \"json\" for a raw JSON Schema. Both produce the same `parameters` schema; this does not change how the request body is encoded (see `args_at_root`).","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.parameter_type","typeLabel":"enum\u003cstring>"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.enable_typing_sound","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.depends_on","typeLabel":"string[]"},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.type","typeLabel":"enum\u003cstring>"},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.equations.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1.condition","typeLabel":"object"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.code","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"timeout_ms":{"type":"integer","minimum":5000,"maximum":60000,"description":"The maximum time in milliseconds the code can run before it's considered timeout. Defaults to 30,000 ms (30 s).","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.timeout_ms","typeLabel":"integer"},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.response_variables.additionalProperties","typeLabel":"string"},"example":{"order_id":"data.order.id"},"description":"A mapping of variable names to JSON paths in the code execution result. These mapped values will be extracted and added as dynamic variables.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the tool.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"speak_after_execution":{"type":"boolean","default":true,"description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.speak_after_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_type","typeLabel":"enum\u003cstring>"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.enable_typing_sound","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.depends_on","typeLabel":"string[]"},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.type","typeLabel":"enum\u003cstring>"},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.equations.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2.condition","typeLabel":"object"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","sms_content"],"properties":{"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed).","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.name","typeLabel":"string"},"type":{"type":"string","enum":["send_sms"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"sms_content":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["predefined"],"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static message to be sent in the SMS. Can contain dynamic variables.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.0","typeLabel":"object"},{"type":"object","properties":{"type":{"type":"string","enum":["inferred"],"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"The prompt to be used to help infer the SMS content. The model will take the global prompt, the call transcript, and this prompt together to deduce the right message to send. Can contain dynamic variables.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.2.type","typeLabel":"enum\u003cstring>"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the SMS content. \"info_collection\" sends a predefined message requesting information from the user.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.2.template","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_content","typeLabel":"object"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, the agent will speak a short line before sending the SMS. If omitted, defaults to true (same as end_call / transfer_call tools).","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say before sending the SMS. Only applicable when speak_during_execution is true.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.execution_message_description","typeLabel":"string"},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\".","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.execution_message_type","typeLabel":"enum\u003cstring>"},"sms_sender":{"oneOf":[{"type":"object","title":"Sender Current Number","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","required":["type"],"properties":{"type":{"type":"string","enum":["current_number"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender.oneOf.0","typeLabel":"Sender Current Number · object"},{"type":"object","title":"Sender Retell Long Code","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","required":["type"],"properties":{"type":{"type":"string","enum":["retell_long_code"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender.oneOf.1","typeLabel":"Sender Retell Long Code · object"},{"type":"object","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender.oneOf.2","typeLabel":"object"},{"type":"null","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender.oneOf.3","typeLabel":"null"}],"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_sender","typeLabel":"Sender Current Number · object | Sender Retell Long Code · object | object | null"},"sms_destination":{"oneOf":[{"type":"object","title":"Destination Customer Number","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","required":["type"],"properties":{"type":{"type":"string","enum":["customer_number"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.0","typeLabel":"Destination Customer Number · object"},{"type":"object","title":"Destination Phone Number","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","required":["type","phone_number"],"properties":{"type":{"type":"string","enum":["phone_number"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"phone_number":{"type":"string","description":"Destination phone number in E.164 format.","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.1.phone_number","typeLabel":"string"},"ignore_e164_validation":{"type":"boolean","description":"If true, skip E.164 validation for this phone number (same semantics as transfer_call ignore_e164_validation).","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.1.ignore_e164_validation","typeLabel":"boolean"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.1","typeLabel":"Destination Phone Number · object"},{"type":"object","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.2","typeLabel":"object"},{"type":"null","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination.oneOf.3","typeLabel":"null"}],"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.sms_destination","typeLabel":"Destination Customer Number · object | Destination Phone Number · object | object | null"},"speak_after_execution":{"type":"boolean","default":true,"description":"Whether the agent should speak after the SMS tool finishes execution.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.speak_after_execution","typeLabel":"boolean"},"depends_on":{"type":"array","items":{"type":"string","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.depends_on.items.[INDEX]","typeLabel":"string"},"description":"Names of tools that must run before this one.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.depends_on","typeLabel":"string[]"},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.type","typeLabel":"enum\u003cstring>"},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation","isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.equations.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3.condition","typeLabel":"object"}},"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"agent_override.agent.post_session_tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Integration (Agent Functions) tools run as a dependency graph during teardown, after post-call analysis. Each tool can be gated by a condition. On calls the graph is stopped after five minutes so teardown can finish. Set to null to clear.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.0","typeLabel":"object[]"},{"type":"null","maxItems":15,"items":{"oneOf":[{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"]},"name":{"type":"string","description":"Name of the tool. Must be unique within the phase's tools; referenced by depends_on. Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"app_id":{"type":"string","description":"The connection (App) this tool runs against. Must be a connection in the organization whose provider matches this tool's provider."},"provider":{"type":"string","description":"Provider of the connection. Must match the connection's provider; supported providers are listed by list-app-templates."},"app_tool_template_name":{"type":"string","description":"Name of the catalog template within the provider, as listed by list-app-templates."},"parameters":{"type":"array","maxItems":5,"items":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object."},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property."},"required":{"type":"array","items":{"type":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties."},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added."}}},"description":"The resolved input parameters, in order. Properties may pin a value with const (including {{variable}} references) or provide a description for LLM inference. Each property may also record selected_input_mode, the editor mode the user selected (\"const_enum\", \"const_boolean\", \"const_value\", \"description_custom\", or \"description_preset\"); it is stored and returned as-is, used only by the tool config UI. Omit the key when no mode is recorded; when set, const_* modes require a non-empty const, and description_* modes must omit const entirely. Each parameter's required list must match the schema returned by the corresponding step of the get-app-tool-schema loop."},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged."},"response_variables":{"type":"object","additionalProperties":{"type":"string"},"example":{"contact_first_name":"data.first_name"},"description":"Mapping of a dynamic-variable name to the response field (dot-path) it is populated from. Missing paths are ignored."},"output_selection":{"oneOf":[{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode"],"properties":{"mode":{"type":"string","enum":["all"]},"fields":{"type":"array","items":{"type":"string"},"description":"Not used at runtime; stored and returned as-is for the UI."}}},{"type":"object","description":"What the agent and the transcript see of the tool's response. Omit to send the full response. Does not affect response_variables, which are always extracted from the raw response.","required":["mode","fields"],"properties":{"mode":{"type":"string","enum":["subset"]},"fields":{"type":"array","items":{"type":"string"},"example":["id","properties.email"],"description":"The only response fields the agent and the transcript see, as dot-paths into the response schema returned by get-app-tool-schema. Everything else is dropped. Selecting a parent keeps its whole subtree. A plain segment traverses arrays element-wise (deals.properties.amount keeps that field on every deal), while key[n] selects one element (deals[0].id keeps only the first deal's id); paths that match nothing contribute nothing."}}}]},"description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. Overrides the catalog template's LLM-facing description."},"speak_during_execution":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, will speak during execution."},"speak_after_execution":{"type":"boolean","default":true,"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Determines whether the agent would call LLM another time and speak when the result of the tool is obtained."},"execution_message_description":{"type":"string","description":"Only applies to during conversation functions; ignored by the pre/post conversation. The message for the agent to speak when executing the tool. Only applicable when speak_during_execution is true."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Only applies to during conversation functions; ignored by the pre/post conversation. Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"enable_typing_sound":{"type":"boolean","description":"Only applies to during conversation functions; ignored by the pre/post conversation. If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"]},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"]},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected."}}}},"operator":{"type":"string","enum":["||","\u0026\u0026"]}}}}},{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"]},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"url":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"description":{"type":"string","description":"Describes what this tool does and when to call this tool."},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL."},"parameters":{"type":"object","description":"The parameters the functions accepts, described as a JSON Schema object. See [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format. Omitting parameters defines a function with an empty parameter list.","required":["type","properties"],"properties":{"type":{"type":"string","enum":["object"],"description":"Type must be \"object\" for a JSON Schema object."},"properties":{"type":"object","description":"The value of properties is an object, where each key is the name of a property and each value is a schema used to validate that property."},"required":{"type":"array","items":{"type":"string"},"description":"List of names of required property when generating this parameter. LLM will do its best to generate the required properties in its function arguments. Property must exist in properties."},"additionalProperties":{"type":"boolean","description":"On an integration function's response schema, false means the output fields are fixed to properties and no others can be added."}}},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged."},"response_variables":{"type":"object","additionalProperties":{"type":"string"},"example":{"user_name":"data.user.name"},"description":"A mapping of variable names to JSON paths in the response body. These values will be extracted from the response and made available as dynamic variables for use."},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the function. Recommend to turn on if your function call takes over 1s (including network) to complete, so that your agent remains responsive."},"speak_after_execution":{"type":"boolean","description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained. Usually this needs to get turned on so user can get update for the function call."},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true. Can write what to say or even provide examples. The default is \"The message you will say to callee when calling this tool. Make sure it fits into the conversation smoothly.\"."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"timeout_ms":{"type":"integer","minimum":1000,"maximum":600000,"description":"The maximum time in milliseconds the tool can run before it's considered timeout. If the tool times out, the agent would have that info. The minimum value allowed is 1000 ms (1 s), and maximum value allowed is 600,000 ms (10 min). By default, this is set to 120,000 ms (2 min)."},"max_retry":{"type":"integer","minimum":0,"maximum":5,"description":"Maximum number of times to retry the request after a failed attempt, from 0 (no retry) to 5. Retries happen on any failure, with exponential backoff between attempts; the backoff delay is not configurable. `timeout_ms` applies per attempt rather than as a budget across all attempts, so an attempt that times out is still retried and the worst-case total duration is `timeout_ms` multiplied by (`max_retry` + 1) as well as any latency incurred by the exponential backoff + jitter between each retry. Only the final attempt's result is reported to the agent. Because retries repeat the request, only set this above 0 if your endpoint is idempotent — a retried request may be processed more than once. Defaults to 0 (no retry)."},"args_at_root":{"type":"boolean","description":"If set to true, the parameters will be passed as root level JSON object instead of nested under \"args\"."},"parameter_type":{"type":"string","enum":["json","form"],"description":"How the tool's `parameters` are authored and shown in the dashboard editor — \"form\" for the visual parameter builder, \"json\" for a raw JSON Schema. Both produce the same `parameters` schema; this does not change how the request body is encoded (see `args_at_root`)."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing. Useful when the tool takes a noticeable amount of time to prevent silence on the call."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"]},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"]},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected."}}}},"operator":{"type":"string","enum":["||","\u0026\u0026"]}}}}},{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"]},"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"description":{"type":"string","description":"Describes what this tool does and when to call this tool."},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox."},"timeout_ms":{"type":"integer","minimum":5000,"maximum":60000,"description":"The maximum time in milliseconds the code can run before it's considered timeout. Defaults to 30,000 ms (30 s)."},"execution_status_variable":{"type":"string","description":"Dynamic variable to store execution status as \"success\" or \"failure\". Tools skipped by conditions or dependencies leave it unchanged."},"response_variables":{"type":"object","additionalProperties":{"type":"string"},"example":{"order_id":"data.order.id"},"description":"A mapping of variable names to JSON paths in the code execution result. These mapped values will be extracted and added as dynamic variables."},"speak_during_execution":{"type":"boolean","description":"Determines whether the agent would say sentence like \"One moment, let me check that.\" when executing the tool."},"speak_after_execution":{"type":"boolean","default":true,"description":"Determines whether the agent would call LLM another time and speak when the result of function is obtained."},"execution_message_description":{"type":"string","description":"The description for the sentence agent say during execution. Only applicable when speak_during_execution is true."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"]},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"]},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected."}}}},"operator":{"type":"string","enum":["||","\u0026\u0026"]}}}}},{"type":"object","description":"A post-session tool with an optional condition. Parameter inference uses the agent prompt, dynamic variables, and conversation. Same tools as PreSessionTool plus send_sms, which is only supported on phone calls — the session is over, so the speak settings are ignored and an inferred sms_content is written by the LLM from the transcript at teardown.","required":["type","name","sms_content"],"properties":{"name":{"type":"string","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges). Must be consisted of a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64 (no space allowed)."},"type":{"type":"string","enum":["send_sms"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"speak_during_execution":{"type":"boolean","description":"If true, the agent will speak a short line before sending the SMS. If omitted, defaults to true (same as end_call / transfer_call tools)."},"execution_message_description":{"type":"string","description":"Describes what to say before sending the SMS. Only applicable when speak_during_execution is true."},"execution_message_type":{"type":"string","enum":["prompt","static_text"],"description":"Type of execution message. \"prompt\" means the agent will use execution_message_description as a prompt to generate the message. \"static_text\" means the agent will speak the execution_message_description directly. Defaults to \"prompt\"."},"sms_content":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["predefined"]},"text":{"type":"string","description":"The static message to be sent in the SMS. Can contain dynamic variables."}}},{"type":"object","properties":{"type":{"type":"string","enum":["inferred"]},"prompt":{"type":"string","description":"The prompt to be used to help infer the SMS content. The model will take the global prompt, the call transcript, and this prompt together to deduce the right message to send. Can contain dynamic variables."}}},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"]},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the SMS content. \"info_collection\" sends a predefined message requesting information from the user."}}}]},"sms_sender":{"oneOf":[{"type":"object","title":"Sender Current Number","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","required":["type"],"properties":{"type":{"type":"string","enum":["current_number"]}}},{"type":"object","title":"Sender Retell Long Code","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","required":["type"],"properties":{"type":{"type":"string","enum":["retell_long_code"]}}},{"type":"object","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},{"type":"null","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."}]},"sms_destination":{"oneOf":[{"type":"object","title":"Destination Customer Number","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","required":["type"],"properties":{"type":{"type":"string","enum":["customer_number"]}}},{"type":"object","title":"Destination Phone Number","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","required":["type","phone_number"],"properties":{"type":{"type":"string","enum":["phone_number"]},"phone_number":{"type":"string","description":"Destination phone number in E.164 format."},"ignore_e164_validation":{"type":"boolean","description":"If true, skip E.164 validation for this phone number (same semantics as transfer_call ignore_e164_validation)."}}},{"type":"object","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call."},{"type":"null","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call."}]},"speak_after_execution":{"type":"boolean","default":true,"description":"Whether the agent should speak after the SMS tool finishes execution."},"depends_on":{"type":"array","items":{"type":"string"},"description":"Names of tools that must run before this one."},"condition":{"type":"object","description":"Optional gate; the step only runs when the condition holds. Defaults to always running.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"]},"equations":{"type":"array","maxItems":50,"items":{"type":"object","required":["left","operator"],"properties":{"left":{"type":"string","description":"Left side of the equation"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"]},"right":{"type":"string","description":"Right side of the equation. The right side of the equation not required when \"exists\" or \"not_exist\" are selected."}}}},"operator":{"type":"string","enum":["||","\u0026\u0026"]}}}}}]},"description":"Integration (Agent Functions) tools run as a dependency graph during teardown, after post-call analysis. Each tool can be gated by a condition. On calls the graph is stopped after five minutes so teardown can finish. Set to null to clear.","uniqueKey":"agent_override.agent.post_session_tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.agent.post_session_tools","typeLabel":"object[] | null"}},"description":"Override agent configuration settings. Any properties specified here will override the base agent configuration for this call. If a Retell LLM or Conversation Flow response engine is specified without a version, it uses the latest version.","uniqueKey":"agent_override.agent","typeLabel":"object"},"retell_llm":{"type":"object","description":"Override Retell LLM configuration settings. Only applicable when using Retell LLM as the response engine. Supported attributes - model_config, knowledge_base_ids, kb_config, start_speaker, begin_after_user_silence_ms, begin_message. A model_config override can set backup to null to remove it for this call, but cannot switch a speech-to-speech LLM to a cascading model.","properties":{"model_config":{"oneOf":[{"type":"object","description":"Model settings for the response engine. type decides which models primary and backup accept. On update, each top-level key replaces the current one and omitted keys are kept; set backup to null to remove it. Changing type requires primary and clears backup, while temperature carries over. In agent_override, type is required whenever primary is set; setting backup to null disables it for that call only.","properties":{"type":{"type":"string","enum":["cascading"],"description":"Runs a text LLM with a separate voice. This is the default type.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"primary":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.primary.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.primary","typeLabel":"object"},"backup":{"oneOf":[{"type":"object","description":"A text LLM that runs alongside the primary and takes over when the primary is slow.","required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup.oneOf.0.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup.oneOf.0.tier","typeLabel":"enum\u003cstring>"},"kick_in_timeout_ms":{"type":"integer","minimum":300,"maximum":60000,"description":"How long to prefer the primary model's output while both models run, in milliseconds. Defaults to 1500.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup.oneOf.0.kick_in_timeout_ms","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup.oneOf.0","typeLabel":"object"},{"type":"object","description":"A text LLM that runs alongside the primary and takes over when the primary is slow.","enum":[null],"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup.oneOf.1","typeLabel":"object"},{"type":"null","description":"A text LLM that runs alongside the primary and takes over when the primary is slow.","enum":[null],"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.backup","typeLabel":"object · object · null"},"temperature":{"type":"number","minimum":0,"maximum":1,"example":0,"description":"Randomness of the response, from 0 to 1. Defaults to 0; a lower value is recommended for tool calling.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.0.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.0","typeLabel":"object"},{"type":"object","description":"Model settings for the response engine. type decides which models primary and backup accept. On update, each top-level key replaces the current one and omitted keys are kept; set backup to null to remove it. Changing type requires primary and clears backup, while temperature carries over. In agent_override, type is required whenever primary is set; setting backup to null disables it for that call only.","properties":{"type":{"type":"string","enum":["s2s"],"description":"Runs a speech-to-speech model.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"primary":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5","gpt-realtime","gpt-realtime-mini","grok-voice-3.0"],"description":"The speech-to-speech model to use","isRequired":true,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.1.primary.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.retell_llm.model_config.oneOf.1.primary","typeLabel":"object"},"temperature":{"type":"number","minimum":0,"maximum":1,"example":0,"description":"Randomness of the response, from 0 to 1. Defaults to 0; a lower value is recommended for tool calling.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.1.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.1","typeLabel":"object"},{"type":"object","description":"Model settings for the response engine. type decides which models primary and backup accept. On update, each top-level key replaces the current one and omitted keys are kept; set backup to null to remove it. Changing type requires primary and clears backup, while temperature carries over. In agent_override, type is required whenever primary is set; setting backup to null disables it for that call only.","properties":{"type":{"type":"string","enum":["duplex"],"description":"Runs a full-duplex voice model with a cascading backend.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"primary":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-live-1"],"isRequired":true,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.primary.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.primary","typeLabel":"object"},"backend":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backend.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backend.tier","typeLabel":"enum\u003cstring>"}},"description":"The text LLM that answers the voice model's delegations.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backend","typeLabel":"object"},"backup":{"oneOf":[{"type":"object","description":"A backup for the backend model.","required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup.oneOf.0.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup.oneOf.0.tier","typeLabel":"enum\u003cstring>"},"kick_in_timeout_ms":{"type":"integer","minimum":300,"maximum":60000,"description":"How long to prefer the primary model's output while both models run, in milliseconds. Defaults to 1500.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup.oneOf.0.kick_in_timeout_ms","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup.oneOf.0","typeLabel":"object"},{"type":"object","description":"A backup for the backend model.","enum":[null],"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup.oneOf.1","typeLabel":"object"},{"type":"null","description":"A backup for the backend model.","enum":[null],"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.backup","typeLabel":"object · object · null"},"temperature":{"type":"number","minimum":0,"maximum":1,"example":0,"description":"Randomness of the response, from 0 to 1. Defaults to 0; a lower value is recommended for tool calling.","uniqueKey":"agent_override.retell_llm.model_config.oneOf.2.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"agent_override.retell_llm.model_config.oneOf.2","typeLabel":"object"}],"uniqueKey":"agent_override.retell_llm.model_config","typeLabel":"object"},"backup_model":{"oneOf":[{"type":"object","description":"Replace backup model configuration for this call only. Omit to inherit the saved configuration, or set null to disable backup. An omitted backup_kick_in_timeout in a supplied configuration defaults to 1500 milliseconds.","required":["type","model"],"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"agent_override.retell_llm.backup_model.oneOf.0.type","typeLabel":"enum\u003cstring>"},"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"The LLM model to use","isRequired":true,"uniqueKey":"agent_override.retell_llm.backup_model.oneOf.0.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"agent_override.retell_llm.backup_model.oneOf.0.high_priority","typeLabel":"boolean"},"ultrafast":{"type":"boolean","description":"Whether to use the ultrafast tier for much faster response generation, default false. Only supported by gpt-6.1-sol on voice agents; ignored otherwise. Takes precedence over high_priority.","uniqueKey":"agent_override.retell_llm.backup_model.oneOf.0.ultrafast","typeLabel":"boolean"},"backup_kick_in_timeout":{"type":"integer","minimum":300,"maximum":60000,"description":"Duration in milliseconds to prefer primary model output while both models run concurrently. Must be between 300 and 60000 milliseconds, inclusive. Defaults to 1500 when omitted.","uniqueKey":"agent_override.retell_llm.backup_model.oneOf.0.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"agent_override.retell_llm.backup_model.oneOf.0","typeLabel":"object"},{"type":"object","description":"Replace backup model configuration for this call only. Omit to inherit the saved configuration, or set null to disable backup. An omitted backup_kick_in_timeout in a supplied configuration defaults to 1500 milliseconds.","enum":[null],"uniqueKey":"agent_override.retell_llm.backup_model.oneOf.1","typeLabel":"object"},{"type":"null","description":"Replace backup model configuration for this call only. Omit to inherit the saved configuration, or set null to disable backup. An omitted backup_kick_in_timeout in a supplied configuration defaults to 1500 milliseconds.","enum":[null],"uniqueKey":"agent_override.retell_llm.backup_model.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.backup_model","typeLabel":"object · object · null"},"model":{"oneOf":[{"type":"string","description":"Deprecated, use model_config.primary. Ignored when model_config is set.","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon",null],"deprecated":true,"example":"gpt-5.6-terra","uniqueKey":"agent_override.retell_llm.model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Deprecated, use model_config.primary. Ignored when model_config is set.","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon",null],"deprecated":true,"example":"gpt-5.6-terra","uniqueKey":"agent_override.retell_llm.model.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.model","typeLabel":"enum\u003cstring> | null"},"s2s_model":{"oneOf":[{"type":"string","description":"Deprecated, use model_config with type s2s. Ignored when model_config is set.","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5","gpt-realtime","gpt-realtime-mini","grok-voice-3.0",null],"deprecated":true,"example":"gpt-realtime-1.5","uniqueKey":"agent_override.retell_llm.s2s_model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Deprecated, use model_config with type s2s. Ignored when model_config is set.","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5","gpt-realtime","gpt-realtime-mini","grok-voice-3.0",null],"deprecated":true,"example":"gpt-realtime-1.5","uniqueKey":"agent_override.retell_llm.s2s_model.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.s2s_model","typeLabel":"enum\u003cstring> | null"},"model_temperature":{"type":"number","example":0,"description":"Deprecated, use model_config.temperature. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.retell_llm.model_temperature","typeLabel":"number"},"model_high_priority":{"oneOf":[{"type":"boolean","example":true,"description":"Deprecated, use model_config.primary.tier fast. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.retell_llm.model_high_priority.oneOf.0","typeLabel":"boolean"},{"type":"null","example":true,"description":"Deprecated, use model_config.primary.tier fast. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.retell_llm.model_high_priority.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.model_high_priority","typeLabel":"boolean | null"},"model_ultrafast":{"oneOf":[{"type":"boolean","example":true,"description":"Deprecated, use model_config.primary.tier ultrafast. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.retell_llm.model_ultrafast.oneOf.0","typeLabel":"boolean"},{"type":"null","example":true,"description":"Deprecated, use model_config.primary.tier ultrafast. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.retell_llm.model_ultrafast.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.model_ultrafast","typeLabel":"boolean | null"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"agent_override.retell_llm.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"A list of knowledge base ids to use for this resource.","uniqueKey":"agent_override.retell_llm.knowledge_base_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"A list of knowledge base ids to use for this resource.","uniqueKey":"agent_override.retell_llm.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.knowledge_base_ids","typeLabel":"string[] | null"},"kb_config":{"oneOf":[{"type":"object","properties":{"top_k":{"type":"integer","minimum":1,"maximum":10,"example":3,"description":"Max number of knowledge base chunks to retrieve","uniqueKey":"agent_override.retell_llm.kb_config.oneOf.0.top_k","typeLabel":"integer"},"filter_score":{"type":"number","minimum":0,"maximum":1,"example":0.6,"description":"Similarity threshold for filtering search results","uniqueKey":"agent_override.retell_llm.kb_config.oneOf.0.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval.","uniqueKey":"agent_override.retell_llm.kb_config.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"top_k":{"type":"integer","minimum":1,"maximum":10,"example":3,"description":"Max number of knowledge base chunks to retrieve"},"filter_score":{"type":"number","minimum":0,"maximum":1,"example":0.6,"description":"Similarity threshold for filtering search results"}},"description":"Knowledge base configuration for RAG retrieval.","uniqueKey":"agent_override.retell_llm.kb_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.kb_config","typeLabel":"object | null"},"start_speaker":{"type":"string","enum":["user","agent"],"description":"The speaker who starts the conversation. Required. Must be either 'user' or 'agent'.","uniqueKey":"agent_override.retell_llm.start_speaker","typeLabel":"enum\u003cstring>"},"begin_after_user_silence_ms":{"oneOf":[{"type":"integer","example":2000,"description":"If set, the AI will begin the conversation after waiting for the user for the duration (in milliseconds) specified by this attribute. This only applies if the agent is configured to wait for the user to speak first. If not set, the agent will wait indefinitely for the user to speak.","uniqueKey":"agent_override.retell_llm.begin_after_user_silence_ms.oneOf.0","typeLabel":"integer"},{"type":"null","example":2000,"description":"If set, the AI will begin the conversation after waiting for the user for the duration (in milliseconds) specified by this attribute. This only applies if the agent is configured to wait for the user to speak first. If not set, the agent will wait indefinitely for the user to speak.","uniqueKey":"agent_override.retell_llm.begin_after_user_silence_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.begin_after_user_silence_ms","typeLabel":"integer | null"},"begin_message":{"oneOf":[{"type":"string","example":"Hey I am a virtual assistant calling from Retell Hospital.","description":"First utterance said by the agent in the call. If not set, LLM will dynamically generate a message. If set to \"\", agent will wait for user to speak first.","uniqueKey":"agent_override.retell_llm.begin_message.oneOf.0","typeLabel":"string"},{"type":"null","example":"Hey I am a virtual assistant calling from Retell Hospital.","description":"First utterance said by the agent in the call. If not set, LLM will dynamically generate a message. If set to \"\", agent will wait for user to speak first.","uniqueKey":"agent_override.retell_llm.begin_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.retell_llm.begin_message","typeLabel":"string | null"}},"uniqueKey":"agent_override.retell_llm","typeLabel":"object"},"conversation_flow":{"type":"object","description":"Override conversation flow configuration settings. Only applicable when using conversation flow as the response engine. Supported attributes - model_config, knowledge_base_ids, kb_config, start_speaker, begin_after_user_silence_ms. A model_config override can set backup to null to remove it for this call.","properties":{"model_config":{"oneOf":[{"type":"object","description":"Model settings for the response engine. type decides which models primary and backup accept. On update, each top-level key replaces the current one and omitted keys are kept; set backup to null to remove it. Changing type requires primary and clears backup, while temperature carries over. In agent_override, type is required whenever primary is set; setting backup to null disables it for that call only.","properties":{"type":{"type":"string","enum":["cascading"],"description":"Runs a text LLM with a separate voice. This is the default type.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.type","typeLabel":"enum\u003cstring>"},"primary":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.primary.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.primary","typeLabel":"object"},"backup":{"oneOf":[{"type":"object","description":"A text LLM that runs alongside the primary and takes over when the primary is slow.","required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup.oneOf.0.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup.oneOf.0.tier","typeLabel":"enum\u003cstring>"},"kick_in_timeout_ms":{"type":"integer","minimum":300,"maximum":60000,"description":"How long to prefer the primary model's output while both models run, in milliseconds. Defaults to 1500.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup.oneOf.0.kick_in_timeout_ms","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup.oneOf.0","typeLabel":"object"},{"type":"object","description":"A text LLM that runs alongside the primary and takes over when the primary is slow.","enum":[null],"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup.oneOf.1","typeLabel":"object"},{"type":"null","description":"A text LLM that runs alongside the primary and takes over when the primary is slow.","enum":[null],"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.backup","typeLabel":"object · object · null"},"temperature":{"type":"number","minimum":0,"maximum":1,"example":0,"description":"Randomness of the response, from 0 to 1. Defaults to 0; a lower value is recommended for tool calling.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.0","typeLabel":"object"},{"type":"object","description":"Model settings for the response engine. type decides which models primary and backup accept. On update, each top-level key replaces the current one and omitted keys are kept; set backup to null to remove it. Changing type requires primary and clears backup, while temperature carries over. In agent_override, type is required whenever primary is set; setting backup to null disables it for that call only.","properties":{"type":{"type":"string","enum":["s2s"],"description":"Runs a speech-to-speech model.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.1.type","typeLabel":"enum\u003cstring>"},"primary":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5","gpt-realtime","gpt-realtime-mini","grok-voice-3.0"],"description":"The speech-to-speech model to use","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.1.primary.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.1.primary","typeLabel":"object"},"temperature":{"type":"number","minimum":0,"maximum":1,"example":0,"description":"Randomness of the response, from 0 to 1. Defaults to 0; a lower value is recommended for tool calling.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.1.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.1","typeLabel":"object"},{"type":"object","description":"Model settings for the response engine. type decides which models primary and backup accept. On update, each top-level key replaces the current one and omitted keys are kept; set backup to null to remove it. Changing type requires primary and clears backup, while temperature carries over. In agent_override, type is required whenever primary is set; setting backup to null disables it for that call only.","properties":{"type":{"type":"string","enum":["duplex"],"description":"Runs a full-duplex voice model with a cascading backend.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.type","typeLabel":"enum\u003cstring>"},"primary":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-live-1"],"isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.primary.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.primary","typeLabel":"object"},"backend":{"type":"object","additionalProperties":false,"required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backend.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backend.tier","typeLabel":"enum\u003cstring>"}},"description":"The text LLM that answers the voice model's delegations.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backend","typeLabel":"object"},"backup":{"oneOf":[{"type":"object","description":"A backup for the backend model.","required":["model"],"properties":{"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"Available LLM models for agents.","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup.oneOf.0.model","typeLabel":"enum\u003cstring>"},"tier":{"type":"string","enum":["standard","fast","ultrafast"],"description":"Capacity tier for a model. standard is always available. fast draws from dedicated capacity for lower, steadier latency, and ultrafast is faster still on voice agents; faster tiers cost more. Each model offers its own set of tiers, and a tier the model does not offer is rejected.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup.oneOf.0.tier","typeLabel":"enum\u003cstring>"},"kick_in_timeout_ms":{"type":"integer","minimum":300,"maximum":60000,"description":"How long to prefer the primary model's output while both models run, in milliseconds. Defaults to 1500.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup.oneOf.0.kick_in_timeout_ms","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup.oneOf.0","typeLabel":"object"},{"type":"object","description":"A backup for the backend model.","enum":[null],"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup.oneOf.1","typeLabel":"object"},{"type":"null","description":"A backup for the backend model.","enum":[null],"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.backup","typeLabel":"object · object · null"},"temperature":{"type":"number","minimum":0,"maximum":1,"example":0,"description":"Randomness of the response, from 0 to 1. Defaults to 0; a lower value is recommended for tool calling.","uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"agent_override.conversation_flow.model_config.oneOf.2","typeLabel":"object"}],"uniqueKey":"agent_override.conversation_flow.model_config","typeLabel":"object"},"backup_model":{"oneOf":[{"type":"object","description":"Replace backup model configuration for this call only. Omit to inherit the saved configuration, or set null to disable backup. An omitted backup_kick_in_timeout in a supplied configuration defaults to 1500 milliseconds.","required":["type","model"],"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.0.type","typeLabel":"enum\u003cstring>"},"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"The LLM model to use","isRequired":true,"uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.0.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.0.high_priority","typeLabel":"boolean"},"ultrafast":{"type":"boolean","description":"Whether to use the ultrafast tier for much faster response generation, default false. Only supported by gpt-6.1-sol on voice agents; ignored otherwise. Takes precedence over high_priority.","uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.0.ultrafast","typeLabel":"boolean"},"backup_kick_in_timeout":{"type":"integer","minimum":300,"maximum":60000,"description":"Duration in milliseconds to prefer primary model output while both models run concurrently. Must be between 300 and 60000 milliseconds, inclusive. Defaults to 1500 when omitted.","uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.0.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.0","typeLabel":"object"},{"type":"object","description":"Replace backup model configuration for this call only. Omit to inherit the saved configuration, or set null to disable backup. An omitted backup_kick_in_timeout in a supplied configuration defaults to 1500 milliseconds.","enum":[null],"uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.1","typeLabel":"object"},{"type":"null","description":"Replace backup model configuration for this call only. Omit to inherit the saved configuration, or set null to disable backup. An omitted backup_kick_in_timeout in a supplied configuration defaults to 1500 milliseconds.","enum":[null],"uniqueKey":"agent_override.conversation_flow.backup_model.oneOf.2","typeLabel":"null"}],"uniqueKey":"agent_override.conversation_flow.backup_model","typeLabel":"object · object · null"},"model_choice":{"oneOf":[{"type":"object","description":"Deprecated, use model_config. Ignored when model_config is set.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.0.type","typeLabel":"enum\u003cstring>"},"model":{"type":"string","enum":["gpt-4.1","gpt-4.1-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-5.2","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6.1-sol","gpt-6.1-terra","gpt-6-luna","claude-4.6-sonnet","claude-5-opus","claude-5.5-opus","claude-5-sonnet","claude-5.5-sonnet","claude-5.5-haiku","claude-4.5-haiku","gemini-3.0-flash","gemini-3.1-flash-lite","gemini-3.5-flash","gemini-3.5-flash-lite","gemini-3.6-flash","gemini-3.7-flash","gemini-3.8-flash","gemini-4-argon"],"description":"The LLM model to use","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.0.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.0.high_priority","typeLabel":"boolean"},"ultrafast":{"type":"boolean","description":"Whether to use the ultrafast tier for much faster response generation, default false. Only supported by gpt-6.1-sol on voice agents; ignored otherwise. Takes precedence over high_priority.","uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.0.ultrafast","typeLabel":"boolean"}},"uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.0","typeLabel":"object"},{"type":"object","description":"Deprecated, use model_config. Ignored when model_config is set.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["s2s"],"description":"Type of model choice","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.1.type","typeLabel":"enum\u003cstring>"},"model":{"type":"string","enum":["gpt-realtime-2.1","gpt-realtime-2.1-mini","gpt-realtime-2","gpt-realtime-1.5","gpt-realtime","gpt-realtime-mini","grok-voice-3.0"],"description":"The speech-to-speech model to use","isRequired":true,"uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.1.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"agent_override.conversation_flow.model_choice.oneOf.1","typeLabel":"object"}],"uniqueKey":"agent_override.conversation_flow.model_choice","typeLabel":"object"},"model_temperature":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"example":0.7,"description":"Deprecated, use model_config.temperature. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.conversation_flow.model_temperature.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"example":0.7,"description":"Deprecated, use model_config.temperature. Ignored when model_config is set.","deprecated":true,"uniqueKey":"agent_override.conversation_flow.model_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.conversation_flow.model_temperature","typeLabel":"number | null"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"agent_override.conversation_flow.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"agent_override.conversation_flow.knowledge_base_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"agent_override.conversation_flow.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.conversation_flow.knowledge_base_ids","typeLabel":"string[] | null"},"kb_config":{"type":"object","properties":{"top_k":{"type":"integer","minimum":1,"maximum":10,"example":3,"description":"Max number of knowledge base chunks to retrieve","uniqueKey":"agent_override.conversation_flow.kb_config.top_k","typeLabel":"integer"},"filter_score":{"type":"number","minimum":0,"maximum":1,"example":0.6,"description":"Similarity threshold for filtering search results","uniqueKey":"agent_override.conversation_flow.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval.","uniqueKey":"agent_override.conversation_flow.kb_config","typeLabel":"object"},"start_speaker":{"type":"string","enum":["user","agent"],"example":"agent","description":"Who starts the conversation - user or agent.","uniqueKey":"agent_override.conversation_flow.start_speaker","typeLabel":"enum\u003cstring>"},"begin_after_user_silence_ms":{"oneOf":[{"type":"integer","example":2000,"description":"If set, the AI will begin the conversation after waiting for the user for the duration (in milliseconds) specified by this attribute. This only applies if the agent is configured to wait for the user to speak first. If not set, the agent will wait indefinitely for the user to speak.","uniqueKey":"agent_override.conversation_flow.begin_after_user_silence_ms.oneOf.0","typeLabel":"integer"},{"type":"null","example":2000,"description":"If set, the AI will begin the conversation after waiting for the user for the duration (in milliseconds) specified by this attribute. This only applies if the agent is configured to wait for the user to speak first. If not set, the agent will wait indefinitely for the user to speak.","uniqueKey":"agent_override.conversation_flow.begin_after_user_silence_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_override.conversation_flow.begin_after_user_silence_ms","typeLabel":"integer | null"}},"uniqueKey":"agent_override.conversation_flow","typeLabel":"object"}},"uniqueKey":"agent_override","typeLabel":"object"},"from_number":{"type":"string","minLength":1,"example":"+14157774444","description":"The number you own in E.164 format. Stored for tracking purpose.","uniqueKey":"from_number","typeLabel":"string"},"to_number":{"type":"string","minLength":1,"example":"+12137774445","description":"The number you want to call, in E.164 format. Stored for tracking purpose.","uniqueKey":"to_number","typeLabel":"string"},"direction":{"type":"string","enum":["inbound","outbound"],"example":"inbound","description":"Direction of the phone call. Stored for tracking purpose.","uniqueKey":"direction","typeLabel":"enum\u003cstring>"},"metadata":{"type":"object","description":"An arbitrary object for storage purpose only. You can put anything here like your internal customer id associated with the call. Not used for processing. You can later get this field from the call object.","uniqueKey":"metadata","typeLabel":"object"},"retell_llm_dynamic_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"retell_llm_dynamic_variables.additionalProperties","typeLabel":"string"},"example":{"customer_name":"John Doe"},"description":"Add optional dynamic variables in key value pairs of string that injects into your Response Engine prompt and tool description. Only applicable for Response Engine.","uniqueKey":"retell_llm_dynamic_variables","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"agent_id":"oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD","agent_version":"latest_published","agent_override":{"agent":{"response_engine":{"type":"retell-llm","llm_id":"llm_234sdertfsdsfsdf","version":0},"agent_name":"Jarvis","version_description":"Customer support agent for handling product inquiries","version_title":"Production hotfix","voice_id":"retell-Cimo","fallback_voice_ids":["cartesia-Cimo","minimax-Cimo"],"voice_temperature":1,"voice_speed":1,"enable_dynamic_voice_speed":true,"enable_dynamic_responsiveness":true,"volume":1,"enable_expressive_mode":true,"expressive_emotion_tags":["empathetic","excited","sigh","clear throat","emphasis"],"expressive_mode_prompt":"Use [sigh] for thoughtful pauses and [excited] for good news.","responsiveness":1,"interruption_sensitivity":1,"enable_backchannel":true,"backchannel_frequency":0.9,"backchannel_words":["yeah","uh-huh"],"reminder_trigger_ms":10000,"reminder_max_count":2,"ambient_sound_volume":1,"language":"en-US","webhook_url":"https://webhook-url-here","webhook_events":[],"webhook_timeout_ms":10000,"boosted_keywords":["retell","kroger"],"contact_memory_config":{"enable_update":true,"enable_read":true},"data_storage_setting":"everything","data_storage_retention_days":30,"opt_in_signed_url":true,"signed_url_expiration_ms":86400000,"pronunciation_dictionary":[{"word":"actually","alphabet":"ipa","phoneme":"ˈæktʃuəli"}],"enable_dnc_detection":false,"end_call_after_silence_ms":600000,"max_call_duration_ms":3600000,"voicemail_option":{"action":{"type":"static_text","text":"Please give us a callback tomorrow at 10am."}},"ivr_option":{"action":{"type":"hangup"}},"call_screening_option":{"agent_identity":"Acme Health scheduling team","call_purpose":"confirming your appointment for tomorrow"},"post_call_analysis_data":[{"type":"string","name":"customer_name","description":"The name of the customer.","examples":["John Doe","Jane Smith"],"required":true,"conditional_prompt":"\u003cstring>"}],"post_call_analysis_model":"gpt-4.1-mini","begin_message_delay_ms":1000,"ring_duration_ms":30000,"stt_mode":"fast","custom_stt_config":{"endpointing_ms":123},"vocab_specialization":"general","allow_user_dtmf":true,"allow_dtmf_interruption":false,"user_dtmf_options":{"digit_limit":25.5,"termination_key":"#","timeout_ms":8000},"denoising_mode":"noise-cancellation","denoising_enhancement_level":0.8,"guardrail_config":{"output_topics":[],"input_topics":["platform_integrity_jailbreaking"]},"handbook_config":{"default_personality":true,"conversational_personality":true,"natural_filler_words":true,"high_empathy":true,"echo_verification":true,"nato_phonetic_alphabet":true,"speech_normalization":true,"smart_matching":true,"ai_disclosure":true,"scope_boundaries":true},"timezone":"America/New_York","pre_session_tools":[{"type":"integration_app","name":"\u003cstring>","app_id":"\u003cstring>","provider":"\u003cstring>","app_tool_template_name":"\u003cstring>","parameters":[{"type":"object","properties":{},"required":["\u003cstring>"],"additionalProperties":true}],"execution_status_variable":"\u003cstring>","response_variables":{"contact_first_name":"data.first_name"},"output_selection":{"mode":"all","fields":["\u003cstring>"]},"description":"\u003cstring>","speak_during_execution":true,"speak_after_execution":true,"execution_message_description":"\u003cstring>","enable_typing_sound":true,"depends_on":["\u003cstring>"]}],"post_session_tools":[{"type":"integration_app","name":"\u003cstring>","app_id":"\u003cstring>","provider":"\u003cstring>","app_tool_template_name":"\u003cstring>","parameters":[{"type":"object","properties":{},"required":["\u003cstring>"],"additionalProperties":true}],"execution_status_variable":"\u003cstring>","response_variables":{"contact_first_name":"data.first_name"},"output_selection":{"mode":"all","fields":["\u003cstring>"]},"description":"\u003cstring>","speak_during_execution":true,"speak_after_execution":true,"execution_message_description":"\u003cstring>","enable_typing_sound":true,"depends_on":["\u003cstring>"]}]},"retell_llm":{"model_config":{"type":"cascading","backup":{"kick_in_timeout_ms":30150},"temperature":0},"backup_model":{"type":"cascading","high_priority":true,"ultrafast":true,"backup_kick_in_timeout":30150},"model":"gpt-5.6-terra","s2s_model":"gpt-realtime-1.5","model_temperature":0,"model_high_priority":true,"model_ultrafast":true,"knowledge_base_ids":["\u003cstring>"],"kb_config":{"top_k":3,"filter_score":0.6},"begin_after_user_silence_ms":2000,"begin_message":"Hey I am a virtual assistant calling from Retell Hospital."},"conversation_flow":{"model_config":{"type":"cascading","backup":{"kick_in_timeout_ms":30150},"temperature":0},"backup_model":{"type":"cascading","high_priority":true,"ultrafast":true,"backup_kick_in_timeout":30150},"model_choice":{"type":"cascading","high_priority":true,"ultrafast":true},"model_temperature":0.7,"knowledge_base_ids":["kb_001","kb_002"],"kb_config":{"top_k":3,"filter_score":0.6},"start_speaker":"agent","begin_after_user_silence_ms":2000}},"from_number":"+14157774444","to_number":"+12137774445","direction":"inbound","metadata":{},"retell_llm_dynamic_variables":{"customer_name":"John Doe"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"f1791758-6d42-4a5f-b992-212bebc90931":{"description":"Successfully registered a phone call.","content":{"application/json":{"schema":{"type":"object","required":["call_id","agent_id","agent_version","call_status","call_type","from_number","to_number","direction"],"properties":{"call_type":{"type":"string","enum":["phone_call"],"example":"phone_call","description":"Type of the call. Used to distinguish between web call and phone call.","isRequired":true,"uniqueKey":"call_type","typeLabel":"enum\u003cstring>"},"from_number":{"type":"string","example":"+12137771234","description":"The caller number.","isRequired":true,"uniqueKey":"from_number","typeLabel":"string"},"to_number":{"type":"string","example":"+12137771235","description":"The callee number.","isRequired":true,"uniqueKey":"to_number","typeLabel":"string"},"direction":{"type":"string","enum":["inbound","outbound"],"example":"inbound","description":"Direction of the phone call.","isRequired":true,"uniqueKey":"direction","typeLabel":"enum\u003cstring>"},"call_id":{"type":"string","example":"Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6","description":"Unique id of the call. Used to identify the call in the LLM websocket and used to authenticate in the audio websocket.","isRequired":true,"uniqueKey":"call_id","typeLabel":"string"},"agent_id":{"type":"string","example":"oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD","description":"Corresponding agent id of this call.","isRequired":true,"uniqueKey":"agent_id","typeLabel":"string"},"agent_version":{"type":"integer","example":1,"description":"The version of the agent.","isRequired":true,"uniqueKey":"agent_version","typeLabel":"integer"},"call_status":{"type":"string","enum":["registered","not_connected","ongoing","ended","error"],"example":"registered","description":"Status of call.\n\n- `registered`: Call id issued, starting to make a call using this id.\n- `ongoing`: Call connected and ongoing.\n- `ended`: The underlying websocket has ended for the call. Either user or agent hung up, or call transferred.\n- `error`: Call encountered error.\n","isRequired":true,"uniqueKey":"call_status","typeLabel":"enum\u003cstring>"},"telephony_identifier":{"type":"object","description":"Telephony identifier of the call, populated when available. Tracking purposes only.","properties":{"twilio_call_sid":{"type":"string","example":"CA5d0d0d8047bf685c3f0ff980fe62c123","description":"Twilio call sid.","uniqueKey":"telephony_identifier.twilio_call_sid","typeLabel":"string"}},"uniqueKey":"telephony_identifier","typeLabel":"object"},"agent_name":{"type":"string","example":"My Agent","description":"Name of the agent.","uniqueKey":"agent_name","typeLabel":"string"},"agent_tag":{"oneOf":[{"type":"string","example":"prod","description":"Tag pointing at the agent version used for this call, captured at call creation time and frozen thereafter (unaffected by later tag reassignments). Populated whether the caller dispatched by tag, numeric version, \"latest\", or \"latest_published\" — when the caller specified a tag, that tag wins; otherwise the most-recently- assigned tag on the resolved version is used. Absent when no tag points at the resolved version (or for calls created before this field was introduced).","uniqueKey":"agent_tag.oneOf.0","typeLabel":"string"},{"type":"null","example":"prod","description":"Tag pointing at the agent version used for this call, captured at call creation time and frozen thereafter (unaffected by later tag reassignments). Populated whether the caller dispatched by tag, numeric version, \"latest\", or \"latest_published\" — when the caller specified a tag, that tag wins; otherwise the most-recently- assigned tag on the resolved version is used. Absent when no tag points at the resolved version (or for calls created before this field was introduced).","uniqueKey":"agent_tag.oneOf.1","typeLabel":"null"}],"uniqueKey":"agent_tag","typeLabel":"string | null"},"metadata":{"type":"object","description":"An arbitrary object for storage purpose only. You can put anything here like your internal customer id associated with the call. Not used for processing. You can later get this field from the call object.","uniqueKey":"metadata","typeLabel":"object"},"retell_llm_dynamic_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"retell_llm_dynamic_variables.additionalProperties","typeLabel":"string"},"example":{"customer_name":"John Doe"},"description":"Add optional dynamic variables in key value pairs of string that injects into your Response Engine prompt and tool description. Only applicable for Response Engine.","uniqueKey":"retell_llm_dynamic_variables","typeLabel":"object"},"collected_dynamic_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"collected_dynamic_variables.additionalProperties","typeLabel":"string"},"example":{"last_node_name":"Test node"},"description":"Dynamic variables collected from the call. Only available after the call ends.","uniqueKey":"collected_dynamic_variables","typeLabel":"object"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"custom_sip_headers.additionalProperties","typeLabel":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call.","uniqueKey":"custom_sip_headers","typeLabel":"object"},"data_storage_setting":{"oneOf":[{"type":"string","enum":["everything","everything_except_pii","basic_attributes_only"],"example":"everything","description":"Data storage setting for this call's agent. \"everything\" stores all data, \"everything_except_pii\" excludes PII when possible, \"basic_attributes_only\" stores only metadata.","uniqueKey":"data_storage_setting.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["everything","everything_except_pii","basic_attributes_only"],"example":"everything","description":"Data storage setting for this call's agent. \"everything\" stores all data, \"everything_except_pii\" excludes PII when possible, \"basic_attributes_only\" stores only metadata.","uniqueKey":"data_storage_setting.oneOf.1","typeLabel":"null"}],"uniqueKey":"data_storage_setting","typeLabel":"enum\u003cstring> | null"},"opt_in_signed_url":{"type":"boolean","example":true,"description":"Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.","uniqueKey":"opt_in_signed_url","typeLabel":"boolean"},"start_timestamp":{"type":"integer","example":1703302407333,"description":"Begin timestamp (milliseconds since epoch) of the call. Available after call starts.","uniqueKey":"start_timestamp","typeLabel":"integer"},"end_timestamp":{"type":"integer","example":1703302428855,"description":"End timestamp (milliseconds since epoch) of the call. Available after call ends.","uniqueKey":"end_timestamp","typeLabel":"integer"},"transfer_end_timestamp":{"type":"integer","example":1703302628855,"description":"Transfer end timestamp (milliseconds since epoch) of the call. Available after transfer call ends.","uniqueKey":"transfer_end_timestamp","typeLabel":"integer"},"duration_ms":{"type":"integer","example":10000,"description":"Duration of the call in milliseconds. Available after call ends.","uniqueKey":"duration_ms","typeLabel":"integer"},"transcript":{"type":"string","example":"Agent: hi how are you doing?\nUser: Doing pretty well. How are you?\nAgent: That's great to hear! I'm doing well too, thanks! What's up?\nUser: I don't have anything in particular.\nAgent: Got it, just checking in!\nUser: Alright. See you.\nAgent: have a nice day\n","description":"Transcription of the call. Available after call ends.","uniqueKey":"transcript","typeLabel":"string"},"transcript_object":{"type":"array","items":{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"transcript_object.items.[INDEX].words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"transcript_object.items.[INDEX].words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"transcript_object.items.[INDEX].words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"transcript_object.items.[INDEX].words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"transcript_object.items.[INDEX].metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"transcript_object.items.[INDEX].metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"transcript_object.items.[INDEX].metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"transcript_object.items.[INDEX].metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"transcript_object.items.[INDEX].metadata","typeLabel":"object"}},"uniqueKey":"transcript_object.items.[INDEX]","typeLabel":"object"},"description":"Transcript of the call in the format of a list of utterance, with timestamp. Available after call ends.","uniqueKey":"transcript_object","typeLabel":"object[]"},"transcript_with_tool_calls":{"type":"array","items":{"oneOf":[{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"description":"This is a tool call invocation.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the tool. This is the configured tool name, or the node name for a built-in conversation flow node, so it can contain spaces and non-ASCII characters. To identify the kind of tool, use `type`.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","description":"Arguments for this tool call, it's a stringified JSON object.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.arguments","typeLabel":"string"},"type":{"type":"string","example":"transfer_call","description":"Kind of tool. Known values are `custom`, `code`, `mcp`, `integration_app`, `end_call`, `transfer_call`, `bridge_transfer`, `cancel_transfer`, `agent_swap`, `press_digit`, `send_sms`, `extract_dynamic_variable`, `adjust_voice_speed`, `book_appointment_cal`, and `check_availability_cal`. New values can be added. Absent on tool calls sent by a custom LLM, and on some older calls and chats.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.type","typeLabel":"string"},"metadata":{"type":"object","properties":{"backup_model_used":{"type":"object","description":"Backup model that generated this tool invocation.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"thought_signature":{"type":"string","description":"Optional thought signature from Google Gemini thinking models. This is used internally to maintain reasoning chain in multi-turn function calling.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1.thought_signature","typeLabel":"string"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"description":"This is the result of a tool call.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","description":"Result of the tool call, can be a string, a stringified json, etc.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.2.content","typeLabel":"string"},"successful":{"type":"boolean","description":"Whether the tool call was successful.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.2.successful","typeLabel":"boolean"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["role","former_node_id","former_node_name","new_node_id","new_node_name"],"properties":{"role":{"type":"string","enum":["node_transition"],"description":"This is result of a node transition","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"former_node_id":{"type":"string","description":"Former node id","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_id","typeLabel":"string"},"former_node_name":{"type":"string","description":"Former node name","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_name","typeLabel":"string"},"new_node_id":{"type":"string","description":"New node id","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_id","typeLabel":"string"},"new_node_name":{"type":"string","description":"New node name","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_name","typeLabel":"string"},"transition_type":{"type":"string","enum":["global","global_go_back","interrupt_go_back","normal"],"description":"How this node was reached. \"global\" means a global node transition, \"global_go_back\" means returning from a global node, \"interrupt_go_back\" means going back due to user interruption, and \"normal\" means a regular edge transition.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3.transition_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["role","digit"],"properties":{"role":{"type":"string","enum":["dtmf"],"description":"Digit pressed by the user from their phone keypad.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"digit":{"type":"string","description":"The digit pressed by the user. Will be a single digit string like \"1\", \"2\", \"3\", \"*\", \"#\" etc.","example":"1","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.4.digit","typeLabel":"string"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["sms"],"description":"SMS message received from the user during the call (for example while the agent is leaving a voicemail). Not part of the spoken conversation.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Text content of the SMS message.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the SMS was received, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.time_sec","typeLabel":"number"},"multimedia":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"URL of the multimedia attachment.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].url","typeLabel":"string"},"summary":{"type":"string","description":"Optional textual summary of the attachment.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].summary","typeLabel":"string"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX]","typeLabel":"object"},"description":"Multimedia attachments (MMS). Display only; not relayed into the spoken conversation.","uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia","typeLabel":"object[]"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["injected"],"description":"External context injected into the conversation via the update-live-call API. Not spoken by either party.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.6.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The injected context text.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.6.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the context was injected, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.6.time_sec","typeLabel":"number"}},"uniqueKey":"transcript_with_tool_calls.items.[INDEX].oneOf.6","typeLabel":"object"}],"uniqueKey":"transcript_with_tool_calls.items.[INDEX]","typeLabel":"object"},"description":"Transcript of the call weaved with tool call invocation and results. It precisely captures when (at what utterance, which word) the tool was invoked and what was the result. Available after call ends.","uniqueKey":"transcript_with_tool_calls","typeLabel":"object[]"},"scrubbed_transcript_with_tool_calls":{"type":"array","items":{"oneOf":[{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"description":"This is a tool call invocation.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the tool. This is the configured tool name, or the node name for a built-in conversation flow node, so it can contain spaces and non-ASCII characters. To identify the kind of tool, use `type`.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","description":"Arguments for this tool call, it's a stringified JSON object.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.arguments","typeLabel":"string"},"type":{"type":"string","example":"transfer_call","description":"Kind of tool. Known values are `custom`, `code`, `mcp`, `integration_app`, `end_call`, `transfer_call`, `bridge_transfer`, `cancel_transfer`, `agent_swap`, `press_digit`, `send_sms`, `extract_dynamic_variable`, `adjust_voice_speed`, `book_appointment_cal`, and `check_availability_cal`. New values can be added. Absent on tool calls sent by a custom LLM, and on some older calls and chats.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.type","typeLabel":"string"},"metadata":{"type":"object","properties":{"backup_model_used":{"type":"object","description":"Backup model that generated this tool invocation.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"thought_signature":{"type":"string","description":"Optional thought signature from Google Gemini thinking models. This is used internally to maintain reasoning chain in multi-turn function calling.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1.thought_signature","typeLabel":"string"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"description":"This is the result of a tool call.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","description":"Result of the tool call, can be a string, a stringified json, etc.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.2.content","typeLabel":"string"},"successful":{"type":"boolean","description":"Whether the tool call was successful.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.2.successful","typeLabel":"boolean"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["role","former_node_id","former_node_name","new_node_id","new_node_name"],"properties":{"role":{"type":"string","enum":["node_transition"],"description":"This is result of a node transition","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"former_node_id":{"type":"string","description":"Former node id","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_id","typeLabel":"string"},"former_node_name":{"type":"string","description":"Former node name","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_name","typeLabel":"string"},"new_node_id":{"type":"string","description":"New node id","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_id","typeLabel":"string"},"new_node_name":{"type":"string","description":"New node name","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_name","typeLabel":"string"},"transition_type":{"type":"string","enum":["global","global_go_back","interrupt_go_back","normal"],"description":"How this node was reached. \"global\" means a global node transition, \"global_go_back\" means returning from a global node, \"interrupt_go_back\" means going back due to user interruption, and \"normal\" means a regular edge transition.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3.transition_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["role","digit"],"properties":{"role":{"type":"string","enum":["dtmf"],"description":"Digit pressed by the user from their phone keypad.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"digit":{"type":"string","description":"The digit pressed by the user. Will be a single digit string like \"1\", \"2\", \"3\", \"*\", \"#\" etc.","example":"1","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.4.digit","typeLabel":"string"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["sms"],"description":"SMS message received from the user during the call (for example while the agent is leaving a voicemail). Not part of the spoken conversation.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Text content of the SMS message.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the SMS was received, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.time_sec","typeLabel":"number"},"multimedia":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"URL of the multimedia attachment.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].url","typeLabel":"string"},"summary":{"type":"string","description":"Optional textual summary of the attachment.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].summary","typeLabel":"string"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX]","typeLabel":"object"},"description":"Multimedia attachments (MMS). Display only; not relayed into the spoken conversation.","uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia","typeLabel":"object[]"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["injected"],"description":"External context injected into the conversation via the update-live-call API. Not spoken by either party.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.6.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The injected context text.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.6.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the context was injected, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.6.time_sec","typeLabel":"number"}},"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX].oneOf.6","typeLabel":"object"}],"uniqueKey":"scrubbed_transcript_with_tool_calls.items.[INDEX]","typeLabel":"object"},"description":"Transcript of the call weaved with tool call invocation and results, without PII. It precisely captures when (at what utterance, which word) the tool was invoked and what was the result. Available after call ends.","uniqueKey":"scrubbed_transcript_with_tool_calls","typeLabel":"object[]"},"pre_session_transcript_with_tool_calls":{"type":"array","items":{"oneOf":[{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"description":"This is a tool call invocation.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the tool. This is the configured tool name, or the node name for a built-in conversation flow node, so it can contain spaces and non-ASCII characters. To identify the kind of tool, use `type`.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","description":"Arguments for this tool call, it's a stringified JSON object.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.arguments","typeLabel":"string"},"type":{"type":"string","example":"transfer_call","description":"Kind of tool. Known values are `custom`, `code`, `mcp`, `integration_app`, `end_call`, `transfer_call`, `bridge_transfer`, `cancel_transfer`, `agent_swap`, `press_digit`, `send_sms`, `extract_dynamic_variable`, `adjust_voice_speed`, `book_appointment_cal`, and `check_availability_cal`. New values can be added. Absent on tool calls sent by a custom LLM, and on some older calls and chats.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.type","typeLabel":"string"},"metadata":{"type":"object","properties":{"backup_model_used":{"type":"object","description":"Backup model that generated this tool invocation.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"thought_signature":{"type":"string","description":"Optional thought signature from Google Gemini thinking models. This is used internally to maintain reasoning chain in multi-turn function calling.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.thought_signature","typeLabel":"string"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"description":"This is the result of a tool call.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","description":"Result of the tool call, can be a string, a stringified json, etc.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.content","typeLabel":"string"},"successful":{"type":"boolean","description":"Whether the tool call was successful.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.successful","typeLabel":"boolean"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["role","former_node_id","former_node_name","new_node_id","new_node_name"],"properties":{"role":{"type":"string","enum":["node_transition"],"description":"This is result of a node transition","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"former_node_id":{"type":"string","description":"Former node id","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_id","typeLabel":"string"},"former_node_name":{"type":"string","description":"Former node name","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_name","typeLabel":"string"},"new_node_id":{"type":"string","description":"New node id","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_id","typeLabel":"string"},"new_node_name":{"type":"string","description":"New node name","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_name","typeLabel":"string"},"transition_type":{"type":"string","enum":["global","global_go_back","interrupt_go_back","normal"],"description":"How this node was reached. \"global\" means a global node transition, \"global_go_back\" means returning from a global node, \"interrupt_go_back\" means going back due to user interruption, and \"normal\" means a regular edge transition.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.transition_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["role","digit"],"properties":{"role":{"type":"string","enum":["dtmf"],"description":"Digit pressed by the user from their phone keypad.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"digit":{"type":"string","description":"The digit pressed by the user. Will be a single digit string like \"1\", \"2\", \"3\", \"*\", \"#\" etc.","example":"1","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.digit","typeLabel":"string"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["sms"],"description":"SMS message received from the user during the call (for example while the agent is leaving a voicemail). Not part of the spoken conversation.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Text content of the SMS message.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the SMS was received, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.time_sec","typeLabel":"number"},"multimedia":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"URL of the multimedia attachment.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].url","typeLabel":"string"},"summary":{"type":"string","description":"Optional textual summary of the attachment.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].summary","typeLabel":"string"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX]","typeLabel":"object"},"description":"Multimedia attachments (MMS). Display only; not relayed into the spoken conversation.","uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia","typeLabel":"object[]"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["injected"],"description":"External context injected into the conversation via the update-live-call API. Not spoken by either party.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The injected context text.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the context was injected, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.time_sec","typeLabel":"number"}},"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6","typeLabel":"object"}],"uniqueKey":"pre_session_transcript_with_tool_calls.items.[INDEX]","typeLabel":"object"},"description":"Tool call invocations and results of integration tools run before the session started (pre-session). Stored separately from the main transcript. Available after call ends if pre-session integration tools ran.","uniqueKey":"pre_session_transcript_with_tool_calls","typeLabel":"object[]"},"scrubbed_pre_session_transcript_with_tool_calls":{"type":"array","items":{"oneOf":[{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"description":"This is a tool call invocation.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the tool. This is the configured tool name, or the node name for a built-in conversation flow node, so it can contain spaces and non-ASCII characters. To identify the kind of tool, use `type`.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","description":"Arguments for this tool call, it's a stringified JSON object.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.arguments","typeLabel":"string"},"type":{"type":"string","example":"transfer_call","description":"Kind of tool. Known values are `custom`, `code`, `mcp`, `integration_app`, `end_call`, `transfer_call`, `bridge_transfer`, `cancel_transfer`, `agent_swap`, `press_digit`, `send_sms`, `extract_dynamic_variable`, `adjust_voice_speed`, `book_appointment_cal`, and `check_availability_cal`. New values can be added. Absent on tool calls sent by a custom LLM, and on some older calls and chats.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.type","typeLabel":"string"},"metadata":{"type":"object","properties":{"backup_model_used":{"type":"object","description":"Backup model that generated this tool invocation.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"thought_signature":{"type":"string","description":"Optional thought signature from Google Gemini thinking models. This is used internally to maintain reasoning chain in multi-turn function calling.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.thought_signature","typeLabel":"string"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"description":"This is the result of a tool call.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","description":"Result of the tool call, can be a string, a stringified json, etc.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.content","typeLabel":"string"},"successful":{"type":"boolean","description":"Whether the tool call was successful.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.successful","typeLabel":"boolean"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["role","former_node_id","former_node_name","new_node_id","new_node_name"],"properties":{"role":{"type":"string","enum":["node_transition"],"description":"This is result of a node transition","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"former_node_id":{"type":"string","description":"Former node id","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_id","typeLabel":"string"},"former_node_name":{"type":"string","description":"Former node name","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_name","typeLabel":"string"},"new_node_id":{"type":"string","description":"New node id","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_id","typeLabel":"string"},"new_node_name":{"type":"string","description":"New node name","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_name","typeLabel":"string"},"transition_type":{"type":"string","enum":["global","global_go_back","interrupt_go_back","normal"],"description":"How this node was reached. \"global\" means a global node transition, \"global_go_back\" means returning from a global node, \"interrupt_go_back\" means going back due to user interruption, and \"normal\" means a regular edge transition.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.transition_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["role","digit"],"properties":{"role":{"type":"string","enum":["dtmf"],"description":"Digit pressed by the user from their phone keypad.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"digit":{"type":"string","description":"The digit pressed by the user. Will be a single digit string like \"1\", \"2\", \"3\", \"*\", \"#\" etc.","example":"1","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.digit","typeLabel":"string"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["sms"],"description":"SMS message received from the user during the call (for example while the agent is leaving a voicemail). Not part of the spoken conversation.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Text content of the SMS message.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the SMS was received, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.time_sec","typeLabel":"number"},"multimedia":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"URL of the multimedia attachment.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].url","typeLabel":"string"},"summary":{"type":"string","description":"Optional textual summary of the attachment.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].summary","typeLabel":"string"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX]","typeLabel":"object"},"description":"Multimedia attachments (MMS). Display only; not relayed into the spoken conversation.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia","typeLabel":"object[]"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["injected"],"description":"External context injected into the conversation via the update-live-call API. Not spoken by either party.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The injected context text.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the context was injected, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.time_sec","typeLabel":"number"}},"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX].oneOf.6","typeLabel":"object"}],"uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls.items.[INDEX]","typeLabel":"object"},"description":"Pre-session integration tool call invocations and results, without PII. Available after call ends if pre-session integration tools ran and PII scrubbing is enabled.","uniqueKey":"scrubbed_pre_session_transcript_with_tool_calls","typeLabel":"object[]"},"post_session_transcript_with_tool_calls":{"type":"array","items":{"oneOf":[{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"description":"This is a tool call invocation.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the tool. This is the configured tool name, or the node name for a built-in conversation flow node, so it can contain spaces and non-ASCII characters. To identify the kind of tool, use `type`.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","description":"Arguments for this tool call, it's a stringified JSON object.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.arguments","typeLabel":"string"},"type":{"type":"string","example":"transfer_call","description":"Kind of tool. Known values are `custom`, `code`, `mcp`, `integration_app`, `end_call`, `transfer_call`, `bridge_transfer`, `cancel_transfer`, `agent_swap`, `press_digit`, `send_sms`, `extract_dynamic_variable`, `adjust_voice_speed`, `book_appointment_cal`, and `check_availability_cal`. New values can be added. Absent on tool calls sent by a custom LLM, and on some older calls and chats.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.type","typeLabel":"string"},"metadata":{"type":"object","properties":{"backup_model_used":{"type":"object","description":"Backup model that generated this tool invocation.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"thought_signature":{"type":"string","description":"Optional thought signature from Google Gemini thinking models. This is used internally to maintain reasoning chain in multi-turn function calling.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.thought_signature","typeLabel":"string"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"description":"This is the result of a tool call.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","description":"Result of the tool call, can be a string, a stringified json, etc.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.content","typeLabel":"string"},"successful":{"type":"boolean","description":"Whether the tool call was successful.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.successful","typeLabel":"boolean"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["role","former_node_id","former_node_name","new_node_id","new_node_name"],"properties":{"role":{"type":"string","enum":["node_transition"],"description":"This is result of a node transition","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"former_node_id":{"type":"string","description":"Former node id","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_id","typeLabel":"string"},"former_node_name":{"type":"string","description":"Former node name","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_name","typeLabel":"string"},"new_node_id":{"type":"string","description":"New node id","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_id","typeLabel":"string"},"new_node_name":{"type":"string","description":"New node name","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_name","typeLabel":"string"},"transition_type":{"type":"string","enum":["global","global_go_back","interrupt_go_back","normal"],"description":"How this node was reached. \"global\" means a global node transition, \"global_go_back\" means returning from a global node, \"interrupt_go_back\" means going back due to user interruption, and \"normal\" means a regular edge transition.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.transition_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["role","digit"],"properties":{"role":{"type":"string","enum":["dtmf"],"description":"Digit pressed by the user from their phone keypad.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"digit":{"type":"string","description":"The digit pressed by the user. Will be a single digit string like \"1\", \"2\", \"3\", \"*\", \"#\" etc.","example":"1","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.digit","typeLabel":"string"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["sms"],"description":"SMS message received from the user during the call (for example while the agent is leaving a voicemail). Not part of the spoken conversation.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Text content of the SMS message.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the SMS was received, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.time_sec","typeLabel":"number"},"multimedia":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"URL of the multimedia attachment.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].url","typeLabel":"string"},"summary":{"type":"string","description":"Optional textual summary of the attachment.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].summary","typeLabel":"string"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX]","typeLabel":"object"},"description":"Multimedia attachments (MMS). Display only; not relayed into the spoken conversation.","uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia","typeLabel":"object[]"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["injected"],"description":"External context injected into the conversation via the update-live-call API. Not spoken by either party.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The injected context text.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the context was injected, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.time_sec","typeLabel":"number"}},"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6","typeLabel":"object"}],"uniqueKey":"post_session_transcript_with_tool_calls.items.[INDEX]","typeLabel":"object"},"description":"Tool call invocations and results of integration tools run after post-call analysis (post-session). Stored separately from the main transcript. Available after call ends if post-session integration tools ran.","uniqueKey":"post_session_transcript_with_tool_calls","typeLabel":"object[]"},"scrubbed_post_session_transcript_with_tool_calls":{"type":"array","items":{"oneOf":[{"type":"object","required":["words","role","content"],"properties":{"role":{"type":"string","enum":["agent","user","transfer_target"],"description":"Documents whether this utterance is spoken by agent or user.","example":"agent","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Transcript of the utterances.","example":"hi how are you doing?","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.content","typeLabel":"string"},"words":{"type":"array","example":[{"word":"hi","start":0.7,"end":1.3}],"description":"Array of words in the utterance with the word timestamp. Useful for understanding what word was spoken at what time. Note that the word timestamp is not guaranteed to be accurate, it's more like an approximation.","items":{"type":"object","properties":{"word":{"type":"string","description":"Word transcript (with punctuation if applicable).","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].word","typeLabel":"string"},"start":{"type":"number","description":"Start time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].start","typeLabel":"number"},"end":{"type":"number","description":"End time of the word in the call in second. This is relative audio time, not wall time.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX].end","typeLabel":"number"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.words","typeLabel":"object[]"},"metadata":{"type":"object","properties":{"response_id":{"type":"integer","description":"Call-scoped agent response identifier, when available.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.response_id","typeLabel":"integer"},"interrupt_id":{"type":"integer","description":"Custom LLM agent interruption identifier, when available.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.interrupt_id","typeLabel":"integer"},"is_backchannel":{"type":"boolean","description":"Whether the utterance is a backchannel acknowledgment.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.is_backchannel","typeLabel":"boolean"},"backup_model_used":{"type":"object","description":"The first backup model used in the Retell-managed response associated with this utterance, including tool-only requests. Does not imply every word was generated by the backup model. Absent when no backup was used or for backchannels.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"description":"This is a tool call invocation.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","description":"Name of the tool. This is the configured tool name, or the node name for a built-in conversation flow node, so it can contain spaces and non-ASCII characters. To identify the kind of tool, use `type`.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","description":"Arguments for this tool call, it's a stringified JSON object.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.arguments","typeLabel":"string"},"type":{"type":"string","example":"transfer_call","description":"Kind of tool. Known values are `custom`, `code`, `mcp`, `integration_app`, `end_call`, `transfer_call`, `bridge_transfer`, `cancel_transfer`, `agent_swap`, `press_digit`, `send_sms`, `extract_dynamic_variable`, `adjust_voice_speed`, `book_appointment_cal`, and `check_availability_cal`. New values can be added. Absent on tool calls sent by a custom LLM, and on some older calls and chats.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.type","typeLabel":"string"},"metadata":{"type":"object","properties":{"backup_model_used":{"type":"object","description":"Backup model that generated this tool invocation.","required":["model","primary_model","backup_model","reason","selection_latency_ms"],"properties":{"model":{"type":"string","description":"Actual selected model after routing and retries.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.model","typeLabel":"string"},"primary_model":{"type":"string","description":"Primary model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_model","typeLabel":"string"},"backup_model":{"type":"string","description":"Backup model configured for this request.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_model","typeLabel":"string"},"reason":{"type":"string","enum":["primary_failed","preference_expired","first_usable"],"description":"Why the backup won. primary_failed means primary attempts failed; preference_expired means backup was ready within the primary preference window; first_usable means backup became ready after that window and won the race.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.reason","typeLabel":"enum\u003cstring>"},"selection_latency_ms":{"type":"number","description":"Elapsed milliseconds from race start to winner selection.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.selection_latency_ms","typeLabel":"number"},"primary_ready_ms":{"type":"number","description":"Elapsed milliseconds until primary produced usable output. Omitted if primary was not ready when the winner was selected.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.primary_ready_ms","typeLabel":"number"},"backup_ready_ms":{"type":"number","description":"Elapsed milliseconds until backup produced usable output. Omitted when unavailable.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used.backup_ready_ms","typeLabel":"number"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata.backup_model_used","typeLabel":"object"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.metadata","typeLabel":"object"},"thought_signature":{"type":"string","description":"Optional thought signature from Google Gemini thinking models. This is used internally to maintain reasoning chain in multi-turn function calling.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1.thought_signature","typeLabel":"string"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"description":"This is the result of a tool call.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","description":"Tool call id, globally unique.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","description":"Result of the tool call, can be a string, a stringified json, etc.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.content","typeLabel":"string"},"successful":{"type":"boolean","description":"Whether the tool call was successful.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2.successful","typeLabel":"boolean"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["role","former_node_id","former_node_name","new_node_id","new_node_name"],"properties":{"role":{"type":"string","enum":["node_transition"],"description":"This is result of a node transition","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"former_node_id":{"type":"string","description":"Former node id","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_id","typeLabel":"string"},"former_node_name":{"type":"string","description":"Former node name","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.former_node_name","typeLabel":"string"},"new_node_id":{"type":"string","description":"New node id","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_id","typeLabel":"string"},"new_node_name":{"type":"string","description":"New node name","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.new_node_name","typeLabel":"string"},"transition_type":{"type":"string","enum":["global","global_go_back","interrupt_go_back","normal"],"description":"How this node was reached. \"global\" means a global node transition, \"global_go_back\" means returning from a global node, \"interrupt_go_back\" means going back due to user interruption, and \"normal\" means a regular edge transition.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3.transition_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["role","digit"],"properties":{"role":{"type":"string","enum":["dtmf"],"description":"Digit pressed by the user from their phone keypad.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"digit":{"type":"string","description":"The digit pressed by the user. Will be a single digit string like \"1\", \"2\", \"3\", \"*\", \"#\" etc.","example":"1","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.4.digit","typeLabel":"string"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["sms"],"description":"SMS message received from the user during the call (for example while the agent is leaving a voicemail). Not part of the spoken conversation.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"Text content of the SMS message.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the SMS was received, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.time_sec","typeLabel":"number"},"multimedia":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"URL of the multimedia attachment.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].url","typeLabel":"string"},"summary":{"type":"string","description":"Optional textual summary of the attachment.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX].summary","typeLabel":"string"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia.items.[INDEX]","typeLabel":"object"},"description":"Multimedia attachments (MMS). Display only; not relayed into the spoken conversation.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5.multimedia","typeLabel":"object[]"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["role","content","time_sec"],"properties":{"role":{"type":"string","enum":["injected"],"description":"External context injected into the conversation via the update-live-call API. Not spoken by either party.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The injected context text.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.content","typeLabel":"string"},"time_sec":{"type":"number","description":"Time the context was injected, in seconds relative to the start of the call.","isRequired":true,"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6.time_sec","typeLabel":"number"}},"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX].oneOf.6","typeLabel":"object"}],"uniqueKey":"scrubbed_post_session_transcript_with_tool_calls.items.[INDEX]","typeLabel":"object"},"description":"Post-session integration tool call invocations and results, without PII. Available after call ends if post-session integration tools ran and PII scrubbing is enabled.","uniqueKey":"scrubbed_post_session_transcript_with_tool_calls","typeLabel":"object[]"},"recording_url":{"type":"string","example":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav","description":"Recording of the call. Available after call ends.","uniqueKey":"recording_url","typeLabel":"string"},"recording_multi_channel_url":{"type":"string","example":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav","description":"Recording of the call, with each party's audio stored in a separate channel. Available after the call ends.","uniqueKey":"recording_multi_channel_url","typeLabel":"string"},"scrubbed_recording_url":{"type":"string","example":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav","description":"Recording of the call without PII. Available after call ends.","uniqueKey":"scrubbed_recording_url","typeLabel":"string"},"scrubbed_recording_multi_channel_url":{"type":"string","example":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav","description":"Recording of the call without PII, with each party's audio stored in a separate channel. Available after the call ends.","uniqueKey":"scrubbed_recording_multi_channel_url","typeLabel":"string"},"public_log_url":{"type":"string","example":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/public_log.txt","description":"Public log of the call, containing details about all the requests and responses received in LLM WebSocket, latency tracking for each turntaking, helpful for debugging and tracing. Available after call ends.","uniqueKey":"public_log_url","typeLabel":"string"},"knowledge_base_retrieved_contents_url":{"type":"string","example":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/kb_retrieved_contents.txt","description":"URL to the knowledge base retrieved contents of the call. Available after call ends if the call utilizes knowledge base feature. It consists of the respond id and the retrieved contents related to that response. It's already rendered in call history tab of dashboard, and you can also manually download and check against the transcript to view the knowledge base retrieval results.","uniqueKey":"knowledge_base_retrieved_contents_url","typeLabel":"string"},"latency":{"type":"object","description":"Latency tracking of the call, available after call ends. Not all fields here will be available, as it depends on the type of call and feature used.","properties":{"e2e":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.e2e.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.e2e.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.e2e.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.e2e.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.e2e.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.e2e.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.e2e.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.e2e.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.e2e.values","typeLabel":"number[]"}},"description":"End to end latency (from user stops talking to agent start talking) tracking of the call. This latency does not account for the network trip time from Retell server to user frontend. The latency is tracked every time turn change between user and agent.","uniqueKey":"latency.e2e","typeLabel":"object"},"asr":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.asr.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.asr.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.asr.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.asr.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.asr.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.asr.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.asr.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.asr.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.asr.values","typeLabel":"number[]"}},"description":"Transcription latency (diff between the duration of the chunks streamed and the durations of the transcribed part) tracking of the call.","uniqueKey":"latency.asr","typeLabel":"object"},"llm":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.llm.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.llm.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.llm.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.llm.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.llm.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.llm.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.llm.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.llm.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.llm.values","typeLabel":"number[]"}},"description":"LLM latency (from issue of LLM call to first speakable chunk received) tracking of the call. When using custom LLM. this latency includes LLM websocket roundtrip time between user server and Retell server.","uniqueKey":"latency.llm","typeLabel":"object"},"llm_websocket_network_rtt":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.llm_websocket_network_rtt.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.llm_websocket_network_rtt.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.llm_websocket_network_rtt.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.llm_websocket_network_rtt.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.llm_websocket_network_rtt.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.llm_websocket_network_rtt.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.llm_websocket_network_rtt.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.llm_websocket_network_rtt.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.llm_websocket_network_rtt.values","typeLabel":"number[]"}},"description":"LLM websocket roundtrip latency (between user server and Retell server) tracking of the call. Only populated for calls using custom LLM.","uniqueKey":"latency.llm_websocket_network_rtt","typeLabel":"object"},"tts":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.tts.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.tts.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.tts.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.tts.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.tts.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.tts.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.tts.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.tts.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.tts.values","typeLabel":"number[]"}},"description":"Text-to-speech latency (from the triggering of TTS to first byte received) tracking of the call.","uniqueKey":"latency.tts","typeLabel":"object"},"knowledge_base":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.knowledge_base.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.knowledge_base.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.knowledge_base.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.knowledge_base.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.knowledge_base.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.knowledge_base.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.knowledge_base.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.knowledge_base.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.knowledge_base.values","typeLabel":"number[]"}},"description":"Knowledge base latency (from the triggering of knowledge base retrival to all relevant context received) tracking of the call. Only populated when using knowledge base feature for the agent of the call.","uniqueKey":"latency.knowledge_base","typeLabel":"object"},"s2s":{"type":"object","properties":{"p50":{"type":"number","description":"50 percentile of latency, measured in milliseconds.","example":800,"uniqueKey":"latency.s2s.p50","typeLabel":"number"},"p90":{"type":"number","description":"90 percentile of latency, measured in milliseconds.","example":1200,"uniqueKey":"latency.s2s.p90","typeLabel":"number"},"p95":{"type":"number","description":"95 percentile of latency, measured in milliseconds.","example":1500,"uniqueKey":"latency.s2s.p95","typeLabel":"number"},"p99":{"type":"number","description":"99 percentile of latency, measured in milliseconds.","example":2500,"uniqueKey":"latency.s2s.p99","typeLabel":"number"},"max":{"type":"number","description":"Maximum latency in the call, measured in milliseconds.","example":2700,"uniqueKey":"latency.s2s.max","typeLabel":"number"},"min":{"type":"number","description":"Minimum latency in the call, measured in milliseconds.","example":500,"uniqueKey":"latency.s2s.min","typeLabel":"number"},"num":{"type":"number","description":"Number of data points (number of times latency is tracked).","example":10,"uniqueKey":"latency.s2s.num","typeLabel":"number"},"values":{"type":"array","items":{"type":"number","uniqueKey":"latency.s2s.values.items.[INDEX]","typeLabel":"number"},"description":"All the latency data points in the call, measured in milliseconds.","uniqueKey":"latency.s2s.values","typeLabel":"number[]"}},"description":"Speech-to-speech latency (from requesting responses of a S2S model to first byte received) tracking of the call. Only populated for calls that uses S2S model like Realtime API.","uniqueKey":"latency.s2s","typeLabel":"object"}},"uniqueKey":"latency","typeLabel":"object"},"disconnection_reason":{"type":"string","enum":["user_hangup","agent_hangup","user_requested_dnc","user_requested_callback","call_transfer","voicemail_reached","ivr_reached","inactivity","max_duration_reached","concurrency_limit_reached","no_concurrency_fallback","no_valid_payment","credit_exhausted","budget_reached","scam_detected","dial_busy","dial_failed","dial_no_answer","invalid_destination","telephony_provider_permission_denied","telephony_provider_unavailable","sip_routing_error","marked_as_spam","network_blocked","user_declined","error_llm_websocket_open","error_llm_websocket_lost_connection","error_llm_websocket_runtime","error_llm_websocket_corrupt_payload","error_no_audio_received","error_asr","error_retell","error_unknown","error_user_not_joined","registered_call_timeout","transfer_bridged","transfer_cancelled","manual_stopped","call_take_over"],"example":"agent_hangup","description":"The reason for the disconnection of the call. Read detailed description about reasons listed here at [Disconnection Reason Doc](/reliability/debug-call-disconnect#understanding-disconnection-reasons).","uniqueKey":"disconnection_reason","typeLabel":"enum\u003cstring>"},"transfer_destination":{"oneOf":[{"type":"string","example":"+12137771234","description":"The destination number or identifier where the call was transferred to. Only populated when the disconnection reason was `call_transfer`. Can be a phone number or a SIP URI. SIP URIs are prefixed with \"sip:\" and may include a \";transport=...\" portion (if transport is known) where the transport type can be \"tls\", \"tcp\" or \"udp\".","uniqueKey":"transfer_destination.oneOf.0","typeLabel":"string"},{"type":"null","example":"+12137771234","description":"The destination number or identifier where the call was transferred to. Only populated when the disconnection reason was `call_transfer`. Can be a phone number or a SIP URI. SIP URIs are prefixed with \"sip:\" and may include a \";transport=...\" portion (if transport is known) where the transport type can be \"tls\", \"tcp\" or \"udp\".","uniqueKey":"transfer_destination.oneOf.1","typeLabel":"null"}],"uniqueKey":"transfer_destination","typeLabel":"string | null"},"call_analysis":{"type":"object","properties":{"call_summary":{"type":"string","example":"The agent called the user to ask question about his purchase inquiry. The agent asked several questions regarding his preference and asked if user would like to book an appointment. The user happily agreed and scheduled an appointment next Monday 10am.","description":"A high level summary of the call.","uniqueKey":"call_analysis.call_summary","typeLabel":"string"},"in_voicemail":{"type":"boolean","example":false,"description":"Whether the call is entered voicemail.","uniqueKey":"call_analysis.in_voicemail","typeLabel":"boolean"},"user_sentiment":{"type":"string","enum":["Negative","Positive","Neutral","Unknown"],"example":"Positive","description":"Sentiment of the user in the call.","uniqueKey":"call_analysis.user_sentiment","typeLabel":"enum\u003cstring>"},"call_successful":{"type":"boolean","example":true,"description":"Whether the agent seems to have a successful call with the user, where the agent finishes the task, and the call was complete without being cutoff.","uniqueKey":"call_analysis.call_successful","typeLabel":"boolean"},"custom_analysis_data":{"type":"object","description":"Custom analysis data that was extracted based on the schema defined in agent post call analysis data. Can be empty if nothing is specified.","uniqueKey":"call_analysis.custom_analysis_data","typeLabel":"object"}},"description":"Post call analysis that includes information such as sentiment, status, summary, and custom defined data to extract. Available after call ends. Subscribe to `call_analyzed` webhook event type to receive it once ready.","uniqueKey":"call_analysis","typeLabel":"object"},"call_cost":{"description":"Cost of the call, including all the products and their costs and discount.","type":"object","required":["product_costs","total_duration_seconds","total_duration_unit_price","combined_cost"],"properties":{"product_costs":{"type":"array","description":"List of products with their unit prices and costs in cents","items":{"type":"object","required":["product","cost"],"properties":{"product":{"type":"string","description":"Product name that has a cost associated with it.","example":"elevenlabs_tts","isRequired":true,"uniqueKey":"call_cost.product_costs.items.[INDEX].product","typeLabel":"string"},"cost":{"type":"number","description":"Cost for the product in cents for the duration of the call.","example":60,"isRequired":true,"uniqueKey":"call_cost.product_costs.items.[INDEX].cost","typeLabel":"number"},"unit_price":{"type":"number","description":"Unit price of the product in cents per second.","example":1,"uniqueKey":"call_cost.product_costs.items.[INDEX].unit_price","typeLabel":"number"},"is_transfer_leg_cost":{"type":"boolean","description":"True if this cost item is for a transfer segment.","uniqueKey":"call_cost.product_costs.items.[INDEX].is_transfer_leg_cost","typeLabel":"boolean"}},"uniqueKey":"call_cost.product_costs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"call_cost.product_costs","typeLabel":"object[]"},"total_duration_seconds":{"type":"number","description":"Total duration of the call in seconds","example":60,"isRequired":true,"uniqueKey":"call_cost.total_duration_seconds","typeLabel":"number"},"total_duration_unit_price":{"type":"number","description":"Total unit duration price of all products in cents per second","example":1,"isRequired":true,"uniqueKey":"call_cost.total_duration_unit_price","typeLabel":"number"},"combined_cost":{"type":"number","description":"Combined cost of all individual costs in cents","example":70,"isRequired":true,"uniqueKey":"call_cost.combined_cost","typeLabel":"number"}},"uniqueKey":"call_cost","typeLabel":"object"},"llm_token_usage":{"type":"object","description":"LLM token usage of the call, available after call ends. Not populated if using custom LLM, realtime API, or no LLM call is made.","required":["values","average","num_requests"],"properties":{"values":{"type":"array","items":{"type":"number","uniqueKey":"llm_token_usage.values.items.[INDEX]","typeLabel":"number"},"description":"All the token count values in the call.","isRequired":true,"uniqueKey":"llm_token_usage.values","typeLabel":"number[]"},"average":{"type":"number","description":"Average token count of the call.","isRequired":true,"uniqueKey":"llm_token_usage.average","typeLabel":"number"},"num_requests":{"type":"number","description":"Number of requests made to the LLM.","isRequired":true,"uniqueKey":"llm_token_usage.num_requests","typeLabel":"number"}},"uniqueKey":"llm_token_usage","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"call_type":"phone_call","from_number":"+12137771234","to_number":"+12137771235","direction":"inbound","call_id":"Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6","agent_id":"oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD","agent_version":1,"call_status":"registered","telephony_identifier":{"twilio_call_sid":"CA5d0d0d8047bf685c3f0ff980fe62c123"},"agent_name":"My Agent","agent_tag":"prod","metadata":{},"retell_llm_dynamic_variables":{"customer_name":"John Doe"},"collected_dynamic_variables":{"last_node_name":"Test node"},"custom_sip_headers":{"X-Custom-Header":"Custom Value"},"data_storage_setting":"everything","opt_in_signed_url":true,"start_timestamp":1703302407333,"end_timestamp":1703302428855,"transfer_end_timestamp":1703302628855,"duration_ms":10000,"transcript":"Agent: hi how are you doing?\nUser: Doing pretty well. How are you?\nAgent: That's great to hear! I'm doing well too, thanks! What's up?\nUser: I don't have anything in particular.\nAgent: Got it, just checking in!\nUser: Alright. See you.\nAgent: have a nice day\n","transcript_object":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"transcript_with_tool_calls":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"scrubbed_transcript_with_tool_calls":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"pre_session_transcript_with_tool_calls":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"scrubbed_pre_session_transcript_with_tool_calls":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"post_session_transcript_with_tool_calls":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"scrubbed_post_session_transcript_with_tool_calls":[{"role":"agent","content":"hi how are you doing?","words":[{"word":"hi","start":0.7,"end":1.3}],"metadata":{"response_id":123,"interrupt_id":123,"is_backchannel":true,"backup_model_used":{"model":"\u003cstring>","primary_model":"\u003cstring>","backup_model":"\u003cstring>","reason":"primary_failed","selection_latency_ms":123,"primary_ready_ms":123,"backup_ready_ms":123}}}],"recording_url":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav","recording_multi_channel_url":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav","scrubbed_recording_url":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav","scrubbed_recording_multi_channel_url":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav","public_log_url":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/public_log.txt","knowledge_base_retrieved_contents_url":"https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/kb_retrieved_contents.txt","latency":{"e2e":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]},"asr":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]},"llm":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]},"llm_websocket_network_rtt":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]},"tts":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]},"knowledge_base":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]},"s2s":{"p50":800,"p90":1200,"p95":1500,"p99":2500,"max":2700,"min":500,"num":10,"values":[123]}},"disconnection_reason":"agent_hangup","transfer_destination":"+12137771234","call_analysis":{"call_summary":"The agent called the user to ask question about his purchase inquiry. The agent asked several questions regarding his preference and asked if user would like to book an appointment. The user happily agreed and scheduled an appointment next Monday 10am.","in_voicemail":false,"user_sentiment":"Positive","call_successful":true,"custom_analysis_data":{}},"call_cost":{"product_costs":[{"product":"elevenlabs_tts","cost":60,"unit_price":1,"is_transfer_leg_cost":true}],"total_duration_seconds":60,"total_duration_unit_price":1,"combined_cost":70},"llm_token_usage":{"values":[123],"average":123,"num_requests":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"5f99b14c-fc34-4be1-91be-5709c029e98b":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"Invalid request format, please check API reference.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"Invalid request format, please check API reference."}}},"exampleType":"generated"}},"exampleType":"generated"},"4a5ed9ea-06d6-47ab-b22f-5cf494095ba3":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"API key is missing or invalid.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"API key is missing or invalid."}}},"exampleType":"generated"}},"exampleType":"generated"},"910927b8-553c-4973-92ef-386e2c65add6":{"description":"Payment Required","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"Trial has ended, please add payment method.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"Trial has ended, please add payment method."}}},"exampleType":"generated"}},"exampleType":"generated"},"f7cf754c-85dc-409e-a672-b73c9e196823":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"Cannot find requested asset under given api key.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"Cannot find requested asset under given api key."}}},"exampleType":"generated"}},"exampleType":"generated"},"8e4b9dca-541f-40bd-88e3-8330a552b1a9":{"description":"Too Many Requests","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"Account rate limited, please throttle your requests.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"Account rate limited, please throttle your requests."}}},"exampleType":"generated"}},"exampleType":"generated"},"4a904419-54f8-49c9-bf78-bf1a72d0648d":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["error"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"An unexpected server error occurred.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"error","message":"An unexpected server error occurred."}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1af9f4ad-4a6e-494a-853d-46841379a6c2":{"api_key":{"type":"http","scheme":"bearer","bearerFormat":"string","description":"Authentication header containing API key (find it in dashboard). The format is \"Bearer YOUR_API_KEY\"","scopes":[],"schemeName":"api_key"}}},"servers":{"1d7d9bd3-7585-446f-82d0-080dd7d50e70":{"url":"https://api.retellai.com","description":"The production server."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"string","description":"Authentication header containing API key (find it in dashboard). The format is \"Bearer YOUR_API_KEY\"","scopes":[],"schemeName":"api_key"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Authentication header containing API key (find it in dashboard). The format is \"Bearer YOUR_API_KEY\"","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"api_key","name":"Authorization"}],"title":"api_key"}]},"originalFileLocation":"openapi-final.yaml"},"subdomain":"retellai","siteName":"Retell AI","title":"Register Phone Call - Retell AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-31T20:10:08.049Z","originalFileLocation":"api-references/register-phone-call.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=\"Register a new phone call for custom telephony\">\u003cmeta data-mint-head name=\"application-name\" content=\"Retell AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_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/retellai/aRxZhiMifgkRJF_R/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Register Phone Call - Retell AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Register a new phone call for custom telephony\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Retell AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.retellai.com/api-references/register-phone-call\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://retellai.mintlify.app/_mintlify/api/og/v2?division=Custom+Telephony\u0026amp;title=Register+Phone+Call\u0026amp;description=Register+a+new+phone+call+for+custom+telephony\u0026amp;theme=35696226f7b423b96c359dbf\u0026amp;signature=03a22b3921587215a5bc0101d1952f04ec804091377882e839036dc9311c739b\">\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=\"Register Phone Call - Retell AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Register a new phone call for custom telephony\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://retellai.mintlify.app/_mintlify/api/og/v2?division=Custom+Telephony\u0026amp;title=Register+Phone+Call\u0026amp;description=Register+a+new+phone+call+for+custom+telephony\u0026amp;theme=35696226f7b423b96c359dbf\u0026amp;signature=03a22b3921587215a5bc0101d1952f04ec804091377882e839036dc9311c739b\">\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/retellai/aRxZhiMifgkRJF_R/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Retell AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#606A78\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.retellai.com/api-references/register-phone-call\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-references/register-phone-call.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.retellai.com/#organization\",\"name\":\"Retell AI\",\"url\":\"https://docs.retellai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/retellai/-E9UettTBfBiCBBS/images/docs-light.png?fit=max\u0026auto=format\u0026n=-E9UettTBfBiCBBS\u0026q=85\u0026s=64eb26a2d3cc9a67ee3ea0bfe086dd14\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.retellai.com#website\",\"name\":\"Retell AI\",\"url\":\"https://docs.retellai.com\",\"publisher\":{\"@id\":\"https://docs.retellai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.retellai.com/api-references/register-phone-call#webpage\",\"url\":\"https://docs.retellai.com/api-references/register-phone-call\",\"name\":\"Register Phone Call\",\"description\":\"Register a new phone call for custom telephony\",\"dateModified\":\"2026-05-31T20:10:08.049Z\",\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.retellai.com/api-references/register-phone-call#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.retellai.com/api-references/register-phone-call#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Custom Telephony\",\"item\":\"https://docs.retellai.com/api-references/import-phone-number\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Register Phone Call\",\"item\":\"https://docs.retellai.com/api-references/register-phone-call\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.retellai.com/api-references/register-phone-call#apireference\",\"headline\":\"Register Phone Call\",\"name\":\"Register Phone Call\",\"description\":\"Register a new phone call for custom telephony\",\"url\":\"https://docs.retellai.com/api-references/register-phone-call\",\"mainEntityOfPage\":{\"@id\":\"https://docs.retellai.com/api-references/register-phone-call#webpage\"},\"dateModified\":\"2026-05-31T20:10:08.049Z\",\"publisher\":{\"@id\":\"https://docs.retellai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Retell AI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Retell AI","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book","pages":[{"title":"Guides","href":"/general/introduction"}]},{"tab":"API Reference","icon":"code-xml","groups":[{"group":" ","pages":[{"title":"Retell AI API Reference","href":"/api-references/overview"}]},{"group":"Call","pages":[{"title":"Create Phone Call","openapi":"openapi-final post /v2/create-phone-call","href":"/api-references/create-phone-call"},{"title":"Create Web Call","openapi":"openapi-final post /v3/create-web-call","href":"/api-references/create-web-call"},{"title":"Get Call","openapi":"openapi-final get /v2/get-call/{call_id}","href":"/api-references/get-call"},{"title":"List Calls","openapi":"openapi-final post /v3/list-calls","href":"/api-references/list-calls"},{"title":"Update Call","openapi":"openapi-final patch /v2/update-call/{call_id}","href":"/api-references/update-call"},{"title":"Update Live Call","openapi":"openapi-final patch /v2/update-live-call/{call_id}","href":"/api-references/update-live-call"},{"title":"Monitor Call WebSocket","icon":"https://mintlify.s3.us-west-1.amazonaws.com/retellai/images/icons/wss-badge.svg","href":"/api-references/monitor-call-websocket"},{"title":"Rerun Call Analysis","openapi":"openapi-final put /rerun-call-analysis/{call_id}","href":"/api-references/rerun-call-analysis"},{"title":"Stop Call","openapi":"openapi-final post /v2/stop-call/{call_id}","href":"/api-references/stop-call"},{"title":"Delete Call","openapi":"openapi-final delete /v2/delete-call/{call_id}","href":"/api-references/delete-call"}]},{"group":"Chat","pages":[{"title":"Create Chat","openapi":"openapi-final post /create-chat","href":"/api-references/create-chat"},{"title":"Create Outbound SMS","openapi":"openapi-final post /create-sms-chat","href":"/api-references/create-sms-chat"},{"title":"Get Chat","openapi":"openapi-final get /get-chat/{chat_id}","href":"/api-references/get-chat"},{"title":"Create Chat Completion","openapi":"openapi-final post /create-chat-completion","href":"/api-references/create-chat-completion"},{"title":"List Chats","openapi":"openapi-final post /v3/list-chats","href":"/api-references/list-chats"},{"title":"Update Chat","openapi":"openapi-final patch /update-chat/{chat_id}","href":"/api-references/update-chat"},{"title":"Rerun Chat Analysis","openapi":"openapi-final put /rerun-chat-analysis/{chat_id}","href":"/api-references/rerun-chat-analysis"},{"title":"End Chat","openapi":"openapi-final patch /end-chat/{chat_id}","href":"/api-references/end-chat"},{"title":"Delete Chat","openapi":"openapi-final delete /delete-chat/{chat_id}","href":"/api-references/delete-chat"}]},{"group":"Playground","pages":[{"title":"Agent Playground Completion","openapi":"openapi-final post /agent-playground-completion/{agent_id}","href":"/api-references/agent-playground-completion"}]},{"group":"Phone Number","pages":[{"title":"Create Phone Number","openapi":"openapi-final post /create-phone-number","href":"/api-references/create-phone-number"},{"title":"Get Phone Number","openapi":"openapi-final get /get-phone-number/{phone_number}","href":"/api-references/get-phone-number"},{"title":"List Phone Numbers","openapi":"openapi-final get /v2/list-phone-numbers","href":"/api-references/list-phone-numbers"},{"title":"Update Phone Number","openapi":"openapi-final patch /update-phone-number/{phone_number}","href":"/api-references/update-phone-number"},{"title":"Delete Phone Number","openapi":"openapi-final delete /delete-phone-number/{phone_number}","href":"/api-references/delete-phone-number"}]},{"group":"Voice Agent","pages":[{"title":"Create Voice Agent","openapi":"openapi-final post /create-agent","href":"/api-references/create-agent"},{"title":"Get Voice Agent","openapi":"openapi-final get /get-agent/{agent_id}","href":"/api-references/get-agent"},{"title":"List Voice Agents","openapi":"openapi-final post /v2/list-agents","href":"/api-references/list-agents"},{"title":"Update Voice Agent","openapi":"openapi-final patch /update-agent/{agent_id}","href":"/api-references/update-agent"},{"title":"Delete Agent","openapi":"openapi-final delete /delete-agent/{agent_id}","href":"/api-references/delete-agent"},{"title":"Publish Agent","openapi":"openapi-final post /publish-agent-version/{agent_id}","href":"/api-references/publish-agent"},{"title":"Create Draft Agent Version","openapi":"openapi-final post /create-agent-version/{agent_id}","href":"/api-references/create-agent-version"},{"title":"Delete Agent Version","openapi":"openapi-final delete /delete-agent-version/{agent_id}","href":"/api-references/delete-agent-version"},{"title":"List Agent Versions","openapi":"openapi-final get /list-agent-versions/{agent_id}","href":"/api-references/list-agent-versions"}]},{"group":"Chat Agent","pages":[{"title":"Create Chat Agent","openapi":"openapi-final post /create-chat-agent","href":"/api-references/create-chat-agent"},{"title":"Get Chat Agent","openapi":"openapi-final get /get-chat-agent/{agent_id}","href":"/api-references/get-chat-agent"},{"title":"List Chat Agents","openapi":"openapi-final post /v2/list-agents","href":"/api-references/list-chat-agents"},{"title":"Update Chat Agent","openapi":"openapi-final patch /update-chat-agent/{agent_id}","href":"/api-references/update-chat-agent"},{"title":"Delete Chat Agent","openapi":"openapi-final delete /delete-chat-agent/{agent_id}","href":"/api-references/delete-chat-agent"},{"title":"Publish Chat Agent","openapi":"openapi-final post /publish-agent-version/{agent_id}","href":"/api-references/publish-chat-agent"},{"title":"Create Draft Chat Agent Version","openapi":"openapi-final post /create-agent-version/{agent_id}","href":"/api-references/create-chat-agent-version"},{"title":"Delete Chat Agent Version","openapi":"openapi-final delete /delete-agent-version/{agent_id}","href":"/api-references/delete-chat-agent-version"},{"title":"List Agent Versions","openapi":"openapi-final get /list-agent-versions/{agent_id}","href":"/api-references/list-agent-versions"}]},{"group":"Retell LLM Response Engine (for single / multi prompt agent)","pages":[{"title":"Create Retell LLM","openapi":"openapi-final post /create-retell-llm","href":"/api-references/create-retell-llm"},{"title":"Get Retell LLM","openapi":"openapi-final get /get-retell-llm/{llm_id}","href":"/api-references/get-retell-llm"},{"title":"List Retell LLMs","openapi":"openapi-final get /v2/list-retell-llms","href":"/api-references/list-retell-llms"},{"title":"Update Retell LLM","openapi":"openapi-final patch /update-retell-llm/{llm_id}","href":"/api-references/update-retell-llm"},{"title":"Delete Retell LLM","openapi":"openapi-final delete /delete-retell-llm/{llm_id}","href":"/api-references/delete-retell-llm"}]},{"group":"Conversation Flow Response Engine (for conversation flow agent)","pages":[{"title":"Create Conversation Flow","openapi":"openapi-final post /create-conversation-flow","href":"/api-references/create-conversation-flow"},{"title":"Get Conversation Flow","openapi":"openapi-final get /get-conversation-flow/{conversation_flow_id}","href":"/api-references/get-conversation-flow"},{"title":"List Conversation Flows","openapi":"openapi-final get /v2/list-conversation-flows","href":"/api-references/list-conversation-flows"},{"title":"Update Conversation Flow","openapi":"openapi-final patch /update-conversation-flow/{conversation_flow_id}","href":"/api-references/update-conversation-flow"},{"title":"Delete Conversation Flow","openapi":"openapi-final delete /delete-conversation-flow/{conversation_flow_id}","href":"/api-references/delete-conversation-flow"}]},{"group":"Conversation Flow Subflows","pages":[{"title":"Create Conversation Flow Subflow","openapi":"openapi-final post /create-conversation-flow-component","href":"/api-references/create-conversation-flow-component"},{"title":"Get Conversation Flow Subflow","openapi":"openapi-final get /get-conversation-flow-component/{conversation_flow_component_id}","href":"/api-references/get-conversation-flow-component"},{"title":"List Conversation Flow Subflows","openapi":"openapi-final get /v2/list-conversation-flow-components","href":"/api-references/list-conversation-flow-components"},{"title":"Update Conversation Flow Subflow","openapi":"openapi-final patch /update-conversation-flow-component/{conversation_flow_component_id}","href":"/api-references/update-conversation-flow-component"},{"title":"Delete Conversation Flow Subflow","openapi":"openapi-final delete /delete-conversation-flow-component/{conversation_flow_component_id}","href":"/api-references/delete-conversation-flow-component"}]},{"group":"MCP Tool","pages":[{"title":"Get MCP Tools","openapi":"openapi-final get /get-mcp-tools/{agent_id}","href":"/api-references/get-mcp-tools"}]},{"group":"Knowledge Base","pages":[{"title":"Create Knowledge Base","openapi":"openapi-final post /create-knowledge-base","href":"/api-references/create-knowledge-base"},{"title":"Get Knowledge Base","openapi":"openapi-final get /get-knowledge-base/{knowledge_base_id}","href":"/api-references/get-knowledge-base"},{"title":"List Knowledge Bases","openapi":"openapi-final get /list-knowledge-bases","href":"/api-references/list-knowledge-bases"},{"title":"Delete Knowledge Base","openapi":"openapi-final delete /delete-knowledge-base/{knowledge_base_id}","href":"/api-references/delete-knowledge-base"},{"title":"Add Knowledge Base Sources","openapi":"openapi-final post /add-knowledge-base-sources/{knowledge_base_id}","href":"/api-references/add-knowledge-base-sources"},{"title":"Delete Knowledge Base Source","openapi":"openapi-final delete /delete-knowledge-base-source/{knowledge_base_id}/source/{source_id}","href":"/api-references/delete-knowledge-base-source"}]},{"group":"Voice","pages":[{"title":"Add Voice","openapi":"openapi-final post /add-community-voice","href":"/api-references/add-voice"},{"title":"Clone Voice","openapi":"openapi-final post /clone-voice","href":"/api-references/clone-voice"},{"title":"Search Voice","openapi":"openapi-final post /search-community-voice","href":"/api-references/search-voice"},{"title":"Get Voice","openapi":"openapi-final get /get-voice/{voice_id}","href":"/api-references/get-voice"},{"title":"List Voices","openapi":"openapi-final get /list-voices","href":"/api-references/list-voices"}]},{"group":"Batch call","pages":[{"title":"Create Batch Call","openapi":"openapi-final post /create-batch-call","href":"/api-references/create-batch-call"}]},{"group":"Contact","pages":[{"title":"Create Contact","openapi":"openapi-final post /create-contact","href":"/api-references/create-contact"},{"title":"Get Contact","openapi":"openapi-final get /get-contact/{contact_id}","href":"/api-references/get-contact"},{"title":"Get Contact by Phone","openapi":"openapi-final get /get-contact-by-phone/{phone_number}","href":"/api-references/get-contact-by-phone"},{"title":"List Contacts","openapi":"openapi-final post /list-contacts","href":"/api-references/list-contacts"},{"title":"List Contact Conversations","openapi":"openapi-final get /list-contact-conversations/{contact_id}","href":"/api-references/list-contact-conversations"},{"title":"Update Contact","openapi":"openapi-final patch /update-contact/{contact_id}","href":"/api-references/update-contact"},{"title":"Delete Contact","openapi":"openapi-final delete /delete-contact/{contact_id}","href":"/api-references/delete-contact"},{"title":"Backfill Contact Analysis Data","openapi":"openapi-final post /backfill-contact-analysis-data","href":"/api-references/backfill-contact-analysis-data"},{"title":"Get Backfill Job Status","openapi":"openapi-final get /get-backfill-contact-job-status","href":"/api-references/get-backfill-contact-job-status"}]},{"group":"App","pages":[{"title":"Create App","openapi":"openapi-final post /create-app","href":"/api-references/create-app"},{"title":"Get App","openapi":"openapi-final get /get-app/{app_id}","href":"/api-references/get-app"},{"title":"List Apps","openapi":"openapi-final get /list-apps","href":"/api-references/list-apps"},{"title":"Update App","openapi":"openapi-final patch /update-app/{app_id}","href":"/api-references/update-app"},{"title":"Delete App","openapi":"openapi-final delete /delete-app/{app_id}","href":"/api-references/delete-app"},{"title":"List App Usages","openapi":"openapi-final get /list-app-usages/{app_id}","href":"/api-references/list-app-usages"},{"title":"Test App Auth","openapi":"openapi-final post /test-app-auth/{app_id}","href":"/api-references/test-app-auth"}]},{"group":"CRM","pages":[{"title":"Get CRM Config","openapi":"openapi-final get /get-crm-config","href":"/api-references/get-crm-config"},{"title":"Update CRM Config","openapi":"openapi-final post /update-crm-config","href":"/api-references/update-crm-config"},{"title":"Get CRM Schema","openapi":"openapi-final get /get-crm-schema","href":"/api-references/get-crm-schema"},{"title":"Run Sync Job","openapi":"openapi-final post /run-sync-job","href":"/api-references/run-sync-job"},{"title":"Get Sync Job Status","openapi":"openapi-final get /get-sync-job-status","href":"/api-references/get-sync-job-status"}]},{"group":"Test Case Definitions","pages":[{"title":"Create Test Case Definition","openapi":"openapi-final post /create-test-case-definition","href":"/api-references/create-test-case-definition"},{"title":"Get Test Case Definition","openapi":"openapi-final get /get-test-case-definition/{test_case_definition_id}","href":"/api-references/get-test-case-definition"},{"title":"List Test Case Definitions","openapi":"openapi-final get /v2/list-test-case-definitions","href":"/api-references/list-test-case-definitions"},{"title":"Update Test Case Definition","openapi":"openapi-final put /update-test-case-definition/{test_case_definition_id}","href":"/api-references/update-test-case-definition"},{"title":"Delete Test Case Definition","openapi":"openapi-final delete /delete-test-case-definition/{test_case_definition_id}","href":"/api-references/delete-test-case-definition"}]},{"group":"Batch Tests","pages":[{"title":"Create Batch Test","openapi":"openapi-final post /create-batch-test","href":"/api-references/create-batch-test"},{"title":"Get Batch Test","openapi":"openapi-final get /get-batch-test/{test_case_batch_job_id}","href":"/api-references/get-batch-test"},{"title":"List Batch Tests","openapi":"openapi-final get /v2/list-batch-tests","href":"/api-references/list-batch-tests"}]},{"group":"Test Runs","pages":[{"title":"Get Test Run","openapi":"openapi-final get /get-test-run/{test_case_job_id}","href":"/api-references/get-test-run"},{"title":"List Test Runs","openapi":"openapi-final get /v2/list-test-runs/{test_case_batch_job_id}","href":"/api-references/list-test-runs"}]},{"group":"Account","pages":[{"title":"Get Concurrency","openapi":"openapi-final get /get-concurrency","href":"/api-references/get-concurrency"},{"title":"List Export Requests","openapi":"openapi-final get /v2/list-export-requests","href":"/api-references/list-export-requests"}]},{"group":"Custom Telephony","pages":[{"title":"Import Phone Number","openapi":"openapi-final post /import-phone-number","description":"Import a phone number from custom telephony \u0026 Bind agents","href":"/api-references/import-phone-number"},{"title":"Register Phone Call","openapi":"openapi-final post /v2/register-phone-call","href":"/api-references/register-phone-call"}]},{"group":"Custom LLM","pages":[{"title":"LLM WebSocket","description":"LLM WebSocket protocol for streaming requests from Retell to your custom LLM server and returning responses, tool calls, and DTMF actions during a live call.","icon":"https://mintlify.s3.us-west-1.amazonaws.com/retellai/images/icons/wss-badge.svg","href":"/api-references/llm-websocket"}]}]},{"tab":"SDK","icon":"package","pages":[{"title":"SDK","href":"/get-started/sdk"}]},{"tab":"MCP","icon":"plug-zap","pages":[{"title":"MCP","href":"/get-started/mcp-server"}]},{"tab":"CLI","icon":"terminal","pages":[{"title":"CLI","href":"/get-started/cli"}]},{"tab":"Deprecations","icon":"book-alert","pages":[{"title":"Deprecations","href":"/deprecation-notice/overview"}]}]},"basePath":"","title":"Register Phone Call - Retell AI","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"]}